如何在 Perl 中将 array/list 定义为全局?
how to define array/list as global in Perl?
我有一个名为@missing_ports 的数组,这个数组一直在从不同的子程序和循环中更新。所以数组需要是全局的。如何在 perl 中将此数组定义为全局数组。
代码包含
使用警告;
使用严格;
我在程序开始时声明这个数组时没有使用“my”关键字,面临以下错误
@missing_ports" 在 experiment.pl 处需要明确的包名称
使用我的关键字能够解决错误,但最后数组为空。
如何在 perl 中处理这种情况?
下面创建一个词法变量:
my @missing_ports;
如果它放在文件的开头,变量将对整个文件可见。
下面创建一个别名为包(全局)变量的词法变量:
our @missing_ports;
您可以在同一个包的多个地方使用它。
您仍然需要使用其他包中的变量全名。
下面声明包变量:
use vars qw( @missing_ports );
这不是词法范围的。
您仍然需要使用其他包中的变量全名。
当然,您始终可以使用变量的全名。
$main::missing_ports
这不需要声明,但如果只按名称引用一次就会发出警告。所以最好结合our
或use vars
.
标点符号变量(例如 $_
)是“超级全局变量”。在没有包名称的情况下使用这些变量不会默认为当前包中的变量;它默认为 root/main
命名空间中的一个变量。 (例如 package Foo; $x; $_;
表示 package Foo; $Foo::x; $main::_;
。)没有办法制作额外的超全局变量。
最后一点,除了 my
之外,此处列出的所有方法都是错误代码的强烈指示。
我有一个名为@missing_ports 的数组,这个数组一直在从不同的子程序和循环中更新。所以数组需要是全局的。如何在 perl 中将此数组定义为全局数组。 代码包含 使用警告; 使用严格;
我在程序开始时声明这个数组时没有使用“my”关键字,面临以下错误 @missing_ports" 在 experiment.pl 处需要明确的包名称 使用我的关键字能够解决错误,但最后数组为空。
如何在 perl 中处理这种情况?
下面创建一个词法变量:
my @missing_ports;
如果它放在文件的开头,变量将对整个文件可见。
下面创建一个别名为包(全局)变量的词法变量:
our @missing_ports;
您可以在同一个包的多个地方使用它。
您仍然需要使用其他包中的变量全名。
下面声明包变量:
use vars qw( @missing_ports );
这不是词法范围的。
您仍然需要使用其他包中的变量全名。
当然,您始终可以使用变量的全名。
$main::missing_ports
这不需要声明,但如果只按名称引用一次就会发出警告。所以最好结合our
或use vars
.
标点符号变量(例如 $_
)是“超级全局变量”。在没有包名称的情况下使用这些变量不会默认为当前包中的变量;它默认为 root/main
命名空间中的一个变量。 (例如 package Foo; $x; $_;
表示 package Foo; $Foo::x; $main::_;
。)没有办法制作额外的超全局变量。
最后一点,除了 my
之外,此处列出的所有方法都是错误代码的强烈指示。