$ perl -wlne'eval;print$@if$@ # interactive perl' use Scalar::Util 'dualvar'; $x = dualvar(256, sprintf "%x", 256); print $x; 100 # correct hexadecimal string print 0+$x; 256 # correct numeric value #### $x .= "foo"; print 0+$x; Argument "100foo" isn't numeric in addition (+) at (eval 9) line 1, <> line 8. 100 print $x; 100foo $x = dualvar(256, '100'); $x += 3; print 0+$x; 259 print $x 259