sub format_money { my $self = shift; my $string = shift; my ($euro,$cent); if($string =~m/\./){ ($euro,$cent) = split(/\./,$string); }else{ ($euro,$cent) = ($string,0); } my $money = $self->format_num($euro) . ',' . sprintf("%.2d", $cent); return $money; } sub format_num { my $self = shift; my $num = shift; $num =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1./g; return $num; }