在 Perl 中,假设我在名为 的变量中有字母 A $character
,我希望它上升到 B,我该怎么做?也可以是数字(0-8),我希望该$character
方法对它们都有效吗?(类似于二进制移位,但不完全确定它是否是那样的)。提前致谢。
问问题
593 次
3 回答
10
增量运算符可能是您想要的。但是,请确保您需要边界行为。例如:
my $character = 'Z';
print ++$character;
产生:
AA
这是来自http://perldoc.perl.org/perlop.html#Auto-increment-and-Auto-decrement的“带进位” 。
于 2012-07-16T03:23:46.603 回答
8
简单的增量应该做你想要的:
my $character = "A";
$character++;
来自perl-doc:
自增运算符有一点额外的内置魔法。如果你增加一个数值变量,或者曾经在数值上下文中使用过的变量,你会得到一个正常的增量。但是,如果该变量自设置以来仅用于字符串上下文,并且其值不是空字符串且与模式匹配 /^a-zA-Z*0-9*\z/ ,则增量以字符串形式完成,将每个字符保留在其范围内,并带有进位
于 2012-07-16T03:11:37.443 回答
1
只是添加到其他回复:
请注意,只有在所讨论的变量从未在数字上下文中使用过时,神奇的自动增量才有效。因此:
perl -e '$x = "A"; ++$x; print $x' # prints "B"
但:
perl -e '$x = "A"; $x + 0; ++$x; print $x' # prints "1"
为了保证始终获得神奇的自动增量,您应该事先明确地对变量进行字符串化:
perl -e '$x = "A"; $x + 0; $x = "$x"; ++$x; print $x' # prints "B"
如果您知道要递增的变量的历史记录并且可以验证它从未在数字上下文中使用过,则可以跳过此步骤。
玩魔法可能很棘手!
于 2012-07-16T18:05:22.140 回答