嗨,我是Perl编程的新手,我刚刚在Perl中遇到过这些类型的变量: package和lexical
到目前为止,我了解到这是一个包变量:
$Santa::Helper::Reindeer::Rudolph::nose
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,Perl如何知道我是否指的是$nose, or @nose or %nose那个包内?
如果我用名称声明另一个变量(一个词法),这也是有效的
$nose or @nose or %nose用我的:
例: my $nose;
$Santa::Helper::Reindeer::Rudolph::nose
Run Code Online (Sandbox Code Playgroud)
是 $nose
@Santa::Helper::Reindeer::Rudolph::nose
Run Code Online (Sandbox Code Playgroud)
是 @nose
如果包通过声明使用词法范围变量our $nose,并且my $nose在代码中声明使用该包,则会破坏它.如果你use strict和use warnings(你总是应该)那么当发生这种情况时它会给你一个警告:"my" variable $nose masks earlier declaration in same scope.如果包通过声明使用私有变量my $nose,那么您也可以my $nose在代码中声明,并且包$nose将不受影响.