Немного подправил твой пример, так как получал предупреждение если число было целым и передавал в качестве второго значения 0, т.е. отказывался от части после десятичтоной точки.
| Код | #!/usr/bin/perl
my $num = 1000;
sub format_digits { my($value, $decimals, $separator) = @_; my $tmp = sprintf("%0.${decimals}f", $value); if (my ($prefix, $middle, $float) = $tmp=~m/^(\d+?)((?:\d{3})*)(\.\d*?)?$/) { $middle =~ s/(\d{3})/$separator$1/g; return $float ? join("",$prefix,$middle,$float) : join("",$prefix,$middle); } else { return $tmp; } }
print format_digits($num,0,',');
|
PS: Сейчас вроде верно работает. |