自增和自減
perl也支持數值類型的自增和自減操作。不僅如此,還支持字符、字符串的自增、自減。
- 如果自增(++)和自減(--)符號放在數值的前面,則先增減,再返回;
- 如果自增(++)和自減(--)符號放在數值的后面,則先返回,再增減;
- 如果自增、自減操作是獨立的一句表達式,則自增、自減符號放在前面或后面都是等價的;
$a=10;
# 以下4句為獨立的自增、自減表達式,自增自減符號的位置無所謂
$a++; # 先返回10,再遞增為11
++$a; # 先遞增為12,再返回12
--$a; # 先遞減為11,再返回11
$a--; # 先返回11,再遞減為10
# 以下4句為非獨立的自增、自減表達式,自增自減符號的位置有影響
$m = $a++; # 先返回10賦值給$m,然后$a再遞增為11,所以執行結束后$m=10,$a=11
$m = ++$a; # 先遞增為12,再賦值給$m,所以執行結束后$m=12,$a=12
$m = --$a; # 先遞減為11,再賦值給$m,所以執行結束后$m=11,$a=11
$m = $a--; # 先返回11賦值給$m,然后$a再遞減為10,所以執行結束后$m=11,$a=10
對於字符和字符串的自增、自減。規則是從最后一個字符按照ascii順序向上進一位,也就是A-->Z,a-->z,如果是Z或z字符,再進一位表示多加一個字符。看示例更容易理解。
$a="b"; say ++$a;
c
$a="ba"; say ++$a;
bb
$a="bz"; say ++$a;
ca
$a="Az"; say ++$a;
Ba
$a="bZ"; say ++$a;
cA
$a="zz"; say ++$a;
aaa