为什么在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_ = _"
答案 0 :(得分:23)
除了其他答案,您还可以使用替代语法来指定变量:
print "i_ = ${i}_\n";
请注意使用大括号:{
和}
来指定变量名称。如有疑问,您可以选择使用此语法。
答案 1 :(得分:18)
$i_
是一个有效的标识符,因此它正在尝试打印该变量的值(您尚未设置,因此它是undef
)。
开启strict
和warnings
。
答案 2 :(得分:7)
Mat是对的。如果在值使用反斜杠后立即确实需要下划线:"$i\_"
。
答案 3 :(得分:3)
始终使用这些:
use strict;
use warnings;