use strict; use warnings; sub commify { my $text = reverse $_[0]; $text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g; return scalar reverse $text; } foreach (qw(-1000 23000000)) { print "$_ transformed to: ",commify($_),"\n"; } __END__ -1000 transformed to: -1,000 23000000 transformed to: 23,000,000