with perl -e’$ string =“a”; print $ string;’我们得到b,
但是用perl -e’$ string =“b”; print – $ string;’我们得到-1。
但是用perl -e’$ string =“b”; print – $ string;’我们得到-1。
所以,如果我们可以递增为什么我们不能递减?
Perl给了我们很多设施,为什么不是这个?这不是批评,但不会预期类似的操作符的类似行为?有什么特别的原因吗?
解决方法
perlop(1)解释说这是真的,但没有给出理由:
The auto-increment operator has a little extra builtin magic to it. [If applicable,and subject to certain constraints,] the increment is done as a string,preserving each character within its range,with carry[…]
The auto-decrement operator is not magical.
得到-1的原因是因为当解释为数字时,“b”变成0,因为它没有前导数字(相反,“4b”变成4)。