D:\>perl -le "$_=23232363283842;print" 23232363283842 #### D:\>perl -le "$_=23232363283842232;print" 2.32323632838422e+016 #### $_=23232363283842232; while($_) { unshift @a, sprintf"%06d", $_%1e6; $_=int($_/1e6); } $a[0]%=1e6; print@a Result: D:\>perl -le "$_=23232363283842232;while($_) { unshift@a,sprintf\"%06d\",$_%1e6; $_=int($_/1e6); } $a[0]%=1e6;print@a" 23232363283842232 #### $sign=""; if($_<0) { $_=-$_; $sign="-"; } ...and at the end print $sign,@a