2

我有以下包/文件结构:第一个:

# package1
package Package1;

use strict;
use warnings;

my @array = (1, 2, 3, 4);

return 1;

第二个:

use strict;
use warnings;
use package1;

foreach $a (@array)
{
    print $a;    
}

不幸的是,我有以下错误:

全局符号“@array”需要在 Package1.pm 中明确的包名称

我试图定义@arrayour,但它没有帮助。我也不能将其定义为只是@array,因为strict

有没有任何合法的方式来制作全局变量strict

4

1 回答 1

5

包装代码:(我们的而不是我的)

package Package1;

use strict;
use warnings;

our @array = (1, 2, 3, 4);

return 1;

脚本代码:

use strict;
use warnings;
use Package1;

foreach my $a (@Package1::array)
{
    print $a;    
}

此外,您可以使用Exporter模块将函数和变量控制到用户的命名空间中

于 2013-05-01T12:15:28.220 回答