perl如何唯一地识别包变量?

rug*_*ted 1 variables perl

嗨,我是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;

qww*_*wwq 5

$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 strictuse warnings(你总是应该)那么当发生这种情况时它会给你一个警告:"my" variable $nose masks earlier declaration in same scope.如果包通过声明使用私有变量my $nose,那么您也可以my $nose在代码中声明,并且包$nose将不受影响.