本文和大家重点讨论一下Perl字符串中标量变量的内插,当一个Perl字符串由双引号括起来时,如果变量前没有反斜线,则变量会被其值内插。也就是说Perl字符串中的标量变量将被其值替换。
Perl字符串中标量变量的内插
当一个Perl字符串由双引号括起来时,如果变量前没有反斜线,则变量会被其值内插。也就是说Perl字符串中的标量变量将被其值替换。
$mean=“brontosaurussteak”;
$barney=“fredatea$meal”;#$barney现在是“fredateabrontosaurussteak”
$barney=‘fredatea’.$meal;#同上
由此可见,不使用双引号也可以得到相同的结果。但使用双引号更方便些。
◆如果一个变量未被赋值,则将使用空值替换:
这是一种特殊的未定义值,undef
$barney=“fredatea$meat”;#$barney现在是“fredatea”;
◆如果使用的是单独一个变量,是否使用引号没有影响。如:
print“$fred”;#引号是没有必要的
print$fred;#更好的写法
在Perl字符串中变量前($符号前)加上反斜线(\),变量将不会被内插(替换):
$fred=‘hello’;
print“Thenameis\$fred.\n”;#打印出美圆符号,变量不会被其值替换
print‘Thenameis$fred’.“\n”;#同上
变量名将是Perl字符串中有意义的最长的那一个。这可能在当你需要在某次匹配就替换的情况下出问题。Perl提供了一种类似于shell的分隔符:花括号({})。用花括号将变量名括起来。或者将Perl字符串分隔成几个部分,再用连接符(.)串起来:
$what=“brontosaurussteak”;
$n=3;
print“fredate$n$whats.\n”;#不是steaks,而是$whats的值
print“fredate$n${what}s.\n”;#现在是使用变量$what
print“fredate$n$what”.“s.\n”;#另一种方法
print‘fredate’.$n.‘’.$what.“s.\n”;#一种复杂的方法
【编辑推荐】