in reply to Re^2: Formatting a number
in thread Formatting a number
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; }
produces
1 12 ,123 1,234 12,345 123,456 1,234,567 12,345,678 123,456,789 1234,567,890 12,345,678,901 123,456,789,012 1234,567,890,123 12345,678,901,234
As you can see, it breaks out of the while too soon as it has not kept up with the increasing length of the number as the commas go in. I agree that it would be nice to factor abs and length out of the loop but can't quite see how to achieve it.
Cheers,
JohnGG
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Formatting a number
by jwkrahn (Abbot) on Oct 17, 2006 at 15:14 UTC | |
by johngg (Canon) on Oct 17, 2006 at 15:38 UTC |