perl如何在打印时识别变量的结尾?

rv1*_*822 4 perl

perl如何识别变量的结尾?

例如,这段代码:

use warnings;
my $a = 10;
print "Value of a is $a:::";
Run Code Online (Sandbox Code Playgroud)

输出:

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

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

这有效:

print "Value of a is $a\:::";
Run Code Online (Sandbox Code Playgroud)

打印:

Value of a is 10:::
Run Code Online (Sandbox Code Playgroud)

Gur*_*uru 7

::用于打印/访问包/符号表中的变量.对于例如,以访问包装ABC标量变量x,Perl使用 $abc::x其中abc是符号表的名称和x是变量.类似地,当你使用时$a:::,Perl认为有一个名为' a'且变量名为的包:,因此也就是那些错误.

请参阅以下示例:

our $a = 10;
{
        my $a=20;
        print "lexical a is $a \n";
        print "Value of a is $main::a";
}
Run Code Online (Sandbox Code Playgroud)