我试图了解我在Perl中使用的变量的范围

时间:2015-04-24 07:02:45

标签: perl scope

我在Perl中使用下面的代码 变量的范围是什么,当你在声明变量时说$ ::是什么意思?

use strict;
use warnings;
use Readonly;

my Readonly::Scalar $::variable_name => 'value';

提前致谢!

2 个答案:

答案 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声明的范围相同。

由于包装变量通常被鄙视,后者是优选的;虽然我意识到能够全局访问常量值可能很有用