Test Parsing
General text parsing and useful subroutines. This is a powerful aspect of perl.
Perl:
Format a number nicely
Last updated at 03:11 PM on Monday 17th January, 2011 by Administrator
Example:
print "-123456789.2 = " . num2str(-123456789.87654321) . "\n";
print "-123456789.2 = " . num2str(-123456789.87654321,' ') . "\n";
-123456789.2 = -123,456,789.2
-123456789.2 = -123 456 789.876543
sub num2str
{
my $num = shift;
my $sep = shift; # optional
my @places = split(/\./, abs($num));
my $intDigits = $places[0];
# add commas or spaces to $intDigits
my $initialPlaces = length($intDigits) % 3;
if($initialPlaces == 0 && length($intDigits) >= 3)
{
$initialPlaces = 3;
}
my $strNum = substr($intDigits,0,$initialPlaces);
for(my $i = $initialPlaces; $i <= length($intDigits)-3; $i += 3)
{
$strNum .= (defined($sep) ? $sep : ",") . substr($intDigits,$i,3);
}
if($num < 0)
{
$strNum = "-" . $strNum;
}
if(@places > 1)
{
$strNum .= "." . $places[1];
}
return $strNum;
}
Comments (0)