use strict; use warnings; use Template; my $tt = Template->new({ FILTERS => { commify => \&commify, }, }); $tt->process(\*DATA, { number => 420000.2527 }) || die $tt->error(); # Perl Cookbook recipe 2.17 sub commify { my $text = reverse $_[0]; $text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g; return scalar reverse $text; } __DATA__ [% number | format('%.02f') | commify %]