Even with -w perl keeps silent, only bash warns. $ set 11111111111; for i in $@ $@$@; do printf %x\\n $i; perl -wle 'printf "%x\n", '$i; echo; done 2964619c7 2964619c7 bash: printf: warning: 1111111111111111111111: Numerical result out of range ffffffffffffffff ffffffffffffffff