#!/usr/bin/perl
# vim:et:sts=4:sws=4:sw=4
use 5.010;
use strict;
use warnings;
use HTML::Template::Compiled;
use HTML::Template::Compiled::Plugin::NumberFormat;
use Number::Format;
my $template = <<"EOM";
<%= .nums.big escape=format_number %>
<%format_number .nums.big_dec precision=3 %>
<%= .nums.price escape=format_price %>
<%= .nums.bytes1 escape=format_bytes %>
<%= .nums.bytes2 escape=format_bytes %>
<%= .nums.bytes3 escape=format_bytes %>
EOM
my $nf = Number::Format->new(
-thousands_sep => '.',
-decimal_point => ',',
-int_curr_symbol => "\x{20ac}",
-kilo_suffix => 'Kb',
-mega_suffix => 'Mb',
-decimal_digits => 2,
);
my $plug = HTML::Template::Compiled::Plugin::NumberFormat->new({
formatter => $nf,
});
my $htc = HTML::Template::Compiled->new(
scalarref => \$template,
plugin => [$plug],
);
my %p = (
nums => {
big => 123_456_789_123,
big_dec => 123_456_789_123.765,
price => 459.95,
bytes1 => 1_024,
bytes2 => 1_500,
bytes3 => 1_500_000,
},
);
$htc->param( %p );
binmode STDOUT, ":encoding(utf-8)";
say $htc->output;