$ perl -Mstrict -Mwarnings -E ' say sub { my $v = shift; return $v if length $v < 4; my $o = 0; substr $v, $_, 0, q{,} for reverse map { $o -= 3 } 1 .. int( ( length( $v ) - 1 ) / 3 ); return $v; }->( $_ ) for qw{ 1 12 123 1234 12345 123456 1234567 12345678 123456789 1234567890 };' 1 12 123 1,234 12,345 123,456 1,234,567 12,345,678 123,456,789 1,234,567,890 $