我遇到了很大的困难,在使用for
循环在Perl中循环遍历符号时,会发现一些奇怪的行为。
此代码段的工作方式与预期一致:
for (my $file = 'a'; $file le 'h'; $file++) {
print $file;
}
但是当我尝试向后循环符号时,就像这样:
for (my $file = 'h'; $file ge 'a'; $file--) {
print $file;
}
给我以下结果。
当涉及符号时,可能减量运算符的行为不像我想的那样吗?
有人对此事有任何想法吗?我非常感谢你的帮助!
此致
托米
答案 0 :(得分:14)
答案 1 :(得分:3)
在perl中,(++)增量运算符是 magical ,而减量运算符is not ...
作为Eric修改的替代方案,你可以这样做:
for (my $file = 'h'; $file ge 'a'; $file=chr((ord$file)-1)) {
print $file;
}
用于计算字符数。
答案 2 :(得分:2)
'++'运算符以有趣的方式处理字符串是神奇的。 Camel,第3版,第91页,给出了这些例子:
print ++($foo = '99'); # prints '100'
print ++($foo = 'a0'); # prints 'b1'
print ++($foo = 'Az'); # prints 'Ba'
print ++($foo = 'zz'); # prints 'aaa'
' - '运算符没有这种魔力。
答案 3 :(得分:1)
是的,魔术行为仅适用于自动增量:
http://perldoc.perl.org/perlop.html#Auto-increment-and-Auto-decrement - > “自动增量算子对它有一些额外的内在魔力。”