是否可以在字符串插值中使用++
运算符? 我尝试了以下方法:
my $i = 0;
foreach my $line (@lines) {
print "${i++}. $linen";
}
但我得到Compile error: Can't modify constant item in postincrement (++)
裸词i
等价于"i"
,所以你正在做"i"++
。
你想要:
print($i++, ". $linen");
简单:
print("$i. $linen");
++$i;
将值嵌入字符串的一个好方法是sprintf
/printf
。
printf("%d. %sn", $i++, $line);
请注意,use strict
不允许使用裸词,因此您还将获得
Bareword "i" not allowed while "strict subs" in use
奇怪的是,该错误是在您提到的错误之后出现的。
您可以使用${($var++)}
在内插变量时递增变量。
use strict ;
use warnings ;
my $var = 5 ;
print "Before: var=$varn" ;
print "Incremented var=${($var++)}n" ;
print "After: var=$varn" ;
这将打印
Before: var=5
Incremented var=6
After: var=6
但是我建议如注释中所述不要使用此代码,因为使用printf
更容易编写和阅读。