Perl如何预先增加字母?

时间:2010-10-09 15:31:22

标签: perl

  

可能重复:
  Autoincrementing letters in Perl

我试图了解Perl的预增量运算符。对于每个不同的变量,我发现Perl中的预增量运算符行为很奇怪。

示例:

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

结果:ca

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

结果:1​​0
结果不应该是10a?

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

结果:bya
结果不应该是cya吗?

2 个答案:

答案 0 :(得分:9)

  

结果不应该是10a?

不,因为魔法增量行为不适用于具有数字后面的字母的值。这些只是转换为数字,并作为数字递增。具体而言,“魔法增量”只能发生在符合/^[a-zA-Z]*[0-9]*\z/的值perlop上。

  

结果不应该是cya吗?

没有。第二次携带是没有理由的。 “z”包装为“a”,前面的“x”增加为“y”,但是没有包裹,所以没有进一步的进位。

答案 1 :(得分:4)

参见 Autoincrementing-letters-in-perl

有关详细信息,请参阅 perlop