sub numfix { my $num = shift; $num = sprintf("%.2f", $num); 1 while $num =~ s/^([-+]?\d+)(\d{3})/$1,$2/; return $num; } foreach ( qw( 1000 1024 4.3 2.44 1024.44 ) ) { print( $_ ); print( " => " ); print( numfix( $_ ) ); print( "\n" ); }