use strict; use warnings; my @nos = qw{ 1 12 123 1234 12345 123456 1234567 12345678 123456789 1234567890 12345678901 123456789012 1234567890123 12345678901234}; printf qq{%20s\n}, useSubstr($_) for @nos; sub useSubstr { my $number = shift; my $length = -( 1 + length $number ); my $offset = -3; while ( $offset > $length ) { substr $number, $offset, 0, q{,}; $offset -= 4; } return $number; }