4

perl 如何识别变量的结尾?

例如,这段代码:

use warnings;
my $a = 10;
print "Value of a is $a:::";

输出:

Use of uninitialized value $a:: in concatenation (.) or string at tryprint.pl line 6.
Value of a is :

为什么它考虑 $a:: 而不是 $a: 或 $a:::

这有效:

print "Value of a is $a\:::";

印刷:

Value of a is 10:::
4

1 回答 1

7

::用于打印/访问包/符号表中的变量。例如,要访问包 abc 中的标量变量 x,Perl 使用 $abc::xwhereabc是符号表的名称并且x是变量。同样,当您使用 时$a:::,Perl 认为存在一个名称为 ' a' 且变量名称为的包:,因此出现了这些错误。

请参阅下面的示例:

our $a = 10;
{
        my $a=20;
        print "lexical a is $a \n";
        print "Value of a is $main::a";
}
于 2013-04-18T06:48:54.780 回答