Actually, there's a fairly explicit explanation in perldoc perlnumber:
Arithmetic operators
The binary operators "+" "-" "*" "/" "%" "==" "!=" ">" "<" ">=" "<
+="
and the unary operators "-" "abs" and "--" will attempt to convert
arguments to integers. If both conversions are possible without lo
+ss
of precision, and the operation can be performed without loss of
precision then the integer result is used. Otherwise arguments are
converted to floating point format and the floating point result i
+s
used. The caching of conversions (as described above) means that t
+he
integer conversion does not throw away fractional parts on floatin
+g
point numbers.
++ "++" behaves as the other operators above, except that if it is a
string matching the format "/^[a-zA-Z]*[0-9]*\z/" the string
increment described in perlop is used.
Arithmetic operators during "use integer"
In scopes where "use integer;" is in force, nearly all the operato
+rs
listed above will force their argument(s) into integer format, and
return an integer result. The exceptions, "abs", "++" and "--", do
not change their behavior with "use integer;"
Note the exception for "++" -- which several of us, esp. /me -- forgot to mention...and the additional exceptions while using use integer.
BTW, there's some related matter (much less clear, to me, anyway) in perlvar... and perhaps (probably?) in other docs? How say you, Monks? |