为什么在Perl中的字符串插值过程中,变量名后跟下划线未正确计算?

时间:2011-08-21 11:02:52

标签: perl double-quotes string-interpolation

为什么在Perl中的字符串插值过程中,变量名后跟下划线未正确计算?

my $i = 3;

print "i = $i\n"; # works, prints "i = 3"
print "_i = _$i\n"; # works, prints "_i = _3"
print "i_ = $i_\n"; # FAILS, prints "i_ = "
print "_i_ = _$i_\n"; # sort of works, prints "_i_ = _"

4 个答案:

答案 0 :(得分:23)

除了其他答案,您还可以使用替代语法来指定变量:

print "i_ = ${i}_\n";

请注意使用大括号:{}来指定变量名称。如有疑问,您可以选择使用此语法。

答案 1 :(得分:18)

$i_是一个有效的标识符,因此它正在尝试打印该变量的值(您尚未设置,因此它是undef)。

开启strictwarnings

答案 2 :(得分:7)

Mat是对的。如果在值使用反斜杠后立即确实需要下划线:"$i\_"

答案 3 :(得分:3)

始终使用这些:

use strict;
use warnings;