使用`strict`在Perl中定义全局变量

Ale*_*lex 2 perl global-variables perl-package

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

# package1
package Package1;

use strict;
use warnings;

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

return 1;
Run Code Online (Sandbox Code Playgroud)

第二个:

use strict;
use warnings;
use package1;

foreach $a (@array)
{
    print $a;    
}
Run Code Online (Sandbox Code Playgroud)

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

全局符号"@array"需要Package1.pm中的显式包名称

我试图定义@arrayour,但它没有帮助.我也不能将它定义为公正@array,因为strict.

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

Mig*_*Prz 5

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

package Package1;

use strict;
use warnings;

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

return 1;
Run Code Online (Sandbox Code Playgroud)

脚本代码:

use strict;
use warnings;
use Package1;

foreach my $a (@Package1::array)
{
    print $a;    
}
Run Code Online (Sandbox Code Playgroud)

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