Perlで、変数に文字Aがあり、$character
それをBまで上げたいとしましょう。これを行うにはどうすればよいですか?数字(0〜8)にする$character
こともできますが、両方でメソッドを機能させたいですか?(バイナリシフトのようなものですが、それがそのようなものであるかどうかは正確にはわかりません)。前もって感謝します。
3 に答える
インクリメント演算子はあなたが望むものかもしれません。ただし、境界の動作が必要であることを確認してください。例えば:
my $character = 'Z';
print ++$character;
生産:
AA
これは、http://perldoc.perl.org/perlop.html#Auto-increment-and-Auto-decrementの「withcarry 」です。
単純な増分はあなたが望むことをするはずです:
my $character = "A";
$character++;
perl-docから:
自動インクリメント演算子には、少し余分な魔法が組み込まれています。数値の変数、または数値コンテキストで使用されたことのある変数をインクリメントすると、通常のインクリメントが得られます。ただし、変数が設定されてから文字列コンテキストでのみ使用されており、値が空の文字列ではなく、パターン/ ^ a-zA-Z * 0-9 * \ z /に一致する場合、増分文字列として実行され、範囲内の各文字を保持し、キャリーを使用します
他の応答に追加するだけです:
魔法の自動インクリメントは、問題の変数が数値コンテキストで使用されたことがない場合にのみ機能することに注意してください。したがって:
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"
インクリメントする変数の履歴がわかっていて、それが数値コンテキストで使用されたことがないことを確認できる場合は、この手順をスキップできる可能性があります。
魔法で遊ぶのは難しいかもしれません!