2010-10-09 67 views
1

可能重複:
Autoincrementing letters in PerlPerl如何預先增加字母?

我想了解Perl的預先遞增運算符。對於每個不同的變量,我發現在Perl中預增加操作符的行爲很奇怪。

實施例:

#!/usr/bin/perl 
$a = "bz"; 
print ++$a, "\n"; 

結果:CA

#!/usr/bin/perl 
$a = "9z"; 
print ++$a, "\n"; 

結果:10
不應結果是10A?

#!/usr/bin/perl 
$a = "bxz"; 
print ++$a, "\n"; 

結果:BYA
不宜結果是CYA?

回答

9

結果不應該是10a嗎?

不,因爲魔法增量行爲不適用於字母跟在數字後面的值。這些簡單地轉換爲數字,並隨着數字增加。具體而言,「神奇增量」只能發生在匹配/^[a-zA-Z]*[0-9]*\z/,每perlop的值。

不應該結果是cya嗎?

沒有沒有理由再次進行。 「z」換行爲「a」,前面的「x」增加爲「y」,但沒有換行,所以沒有進一步的進位。