8

为什么在 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

4 回答 4

26

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

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

注意大括号的用法:{}指定变量名。如有疑问,您可以选择这种语法。

于 2011-08-21T11:18:54.920 回答
18

$i_是一个有效的标识符,所以它试图打印那个变量的值(你没有设置,所以它是undef)。

打开strictwarnings

于 2011-08-21T11:06:50.480 回答
7

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

于 2011-08-21T11:11:18.047 回答
3

始终使用这些:

use strict;
use warnings;
于 2011-08-21T12:31:39.033 回答