Perl上了一个角色?

Gri*_*gor 2 perl

在Perl中,假设我在变量中有字母A $character,我希望它上升到B,我该怎么做?该$character也可以是数字(0-8),我想他们两人的工作方法?(像二进制移位,但不完全确定它是否类似).提前致谢.

小智 8

增量运算符可能是您想要的.但是,请确保您需要边界行为.例如:

my $character = 'Z';
print ++$character;
Run Code Online (Sandbox Code Playgroud)

生产:

AA
Run Code Online (Sandbox Code Playgroud)

这是http://perldoc.perl.org/perlop.html#Auto-increment-and-Auto-decrement中的"with carry" .


per*_*eal 7

简单的增量应该做你想要的:

my $character = "A";
$character++;
Run Code Online (Sandbox Code Playgroud)

来自perl-doc:

自动增量运算符具有一些额外的内置魔力.如果增加一个数字变量,或者在数值上下文中使用过的变量,则会得到正常的增量.但是,如果变量仅在字符串上下文中使用,因为它已设置,并且其值不是空字符串并且匹配模式/ ^ a-zA-Z*0-9*\z /,则增量以字符串形式完成,使用carry保留其范围内的每个字符

  • 这不是Perl [issues](http://perldoc.perl.org/perldiag.html)的消息.最接近的是"Argument ...不是数字",但我不知道你怎么能从`++`得到它.请使用您实际使用的代码和输入. (4认同)
  • 我从来没有见过Perl发出那条消息.什么版本?这在这里工作正常:`perl -le'my $ character ="A"; $字符++; print $ character;'`=>`B`. (2认同)