use strict; my $number = 1234567890; print STDOUT "In: $number\n"; my $reversed = reverse($number); print STDOUT "Reversed: $reversed\n"; my @array = split/(\d{3})/, $reversed; shift @array; print STDOUT "Array: '" . join ("' - '", @array) . "'\n"; my $out = join("", map { $_ eq '' ? ',' : reverse($_) } @array); print STDOUT "Out: " . reverse($out) . "\n"; exit 0; #### In: 1234567890 Reversed: 0987654321 Array: '098' - '' - '765' - '' - '432' - '1' Out: 1234,567,890 #### my $out = substr(reverse(join("", map { $_ eq "" ? '' : $_ . ',' } split/(\d{3})/, reverse($number))), 1);