为什么在 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_ = _"
为什么在 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_ = _"
除了其他答案之外,您还可以使用替代语法来指定变量:
print "i_ = ${i}_\n";
注意大括号的用法:{
并}
指定变量名。如有疑问,您可以选择这种语法。
$i_
是一个有效的标识符,所以它试图打印那个变量的值(你没有设置,所以它是undef
)。
打开strict
和warnings
。
马特是对的。如果您确实需要在值后立即使用下划线,请使用反斜杠:"$i\_"
。
始终使用这些:
use strict;
use warnings;