我试图了解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吗?
答案 0 :(得分:9)
结果不应该是10a?
不,因为魔法增量行为不适用于具有数字后面的字母的值。这些只是转换为数字,并作为数字递增。具体而言,“魔法增量”只能发生在符合/^[a-zA-Z]*[0-9]*\z/
的值perlop上。
结果不应该是cya吗?
没有。第二次携带是没有理由的。 “z”包装为“a”,前面的“x”增加为“y”,但是没有包裹,所以没有进一步的进位。
答案 1 :(得分:4)
参见 Autoincrementing-letters-in-perl
有关详细信息,请参阅 perlop