我在Perl中使用下面的代码 变量的范围是什么,当你在声明变量时说$ ::是什么意思?
use strict;
use warnings;
use Readonly;
my Readonly::Scalar $::variable_name => 'value';
提前致谢!
答案 0 :(得分:5)
来自perlfaq7:
如果你知道你的包裹,你可以明确地提及它,如
$Some_Pack::var
。请注意,符号$::var
不当前包中的动态$var
,而是“main”包中的符号,就好像您已编写{{1} }。
$main::var
答案 1 :(得分:5)
$::variable_name
与$main::variable_name
相同,为了清晰起见,您应该使用后者。
你的意思是
Readonly::Scalar $main::variable_name => 'value';
具有全局范围,因为$main::variable_name
可以从任何地方访问
或
Readonly::Scalar my $variable_name => 'value';
与普通my
声明的范围相同。
由于包装变量通常被鄙视,后者是优选的;虽然我意识到能够全局访问常量值可能很有用