ewo*_*wok 0 perl increment string-interpolation
是否可以++在字符串插值中使用运算符?我尝试过以下方法:
my $i = 0;
foreach my $line (@lines) {
print "${i++}. $line\n";
}
Run Code Online (Sandbox Code Playgroud)
但我明白了 Compile error: Can't modify constant item in postincrement (++)
Bareword i相当于"i",所以你在做"i"++.
你要:
print($i++, ". $line\n");
Run Code Online (Sandbox Code Playgroud)
更简单:
print("$i. $line\n");
++$i;
Run Code Online (Sandbox Code Playgroud)
将值嵌入字符串的好方法是sprintf/ printf.
printf("%d. %s\n", $i++, $line);
Run Code Online (Sandbox Code Playgroud)
请注意,use strict不允许使用裸字,因此您也可以获得
Bareword "i" not allowed while "strict subs" in use
Run Code Online (Sandbox Code Playgroud)
在您提到的错误之后,这个错误很奇怪.
您可以${\($var++)}在插入变量时使用它来递增变量。
use strict ;
use warnings ;
my $var = 5 ;
print "Before: var=$var\n" ;
print "Incremented var=${\($var++)}\n" ;
print "After: var=$var\n" ;
Run Code Online (Sandbox Code Playgroud)
这将打印
Before: var=5
Incremented var=6
After: var=6
Run Code Online (Sandbox Code Playgroud)
但我建议正如评论中提到的那样不要使用这段代码,因为使用printf更容易编写和阅读。
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |