Perl:字符串插值中的增量变量



是否可以在字符串插值中使用++运算符? 我尝试了以下方法:

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更容易编写和阅读。

最新更新