2013-04-18 51 views
4

perl如何识别变量的结尾?在打印时,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:$或一:::

这作品:

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

打印:

Value of a is 10::: 
+5

在一般情况下,凡是能在变量名中使用被解释为'$'后一个变量名。如果你想消除歧义,使用大括号;例如,打印'$ a'后面加'b',使用'print'$ {a} b“'(而不是'print'$ ab”'查找可能找不到的变量' $ ab')。 – tripleee 2013-04-18 06:58:15

+0

哦,'Perl':'print“$ parts_ $ of_ $ file_ $ name”':( – gaussblurinc 2013-04-18 08:27:01

回答

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"; 
}