#!perl
# based on http://www.geminium.com/chiba_blog/2009/07/12/212/
use strict;
use warnings;
use utf8;
use FindBin qw($Bin);
binmode STDOUT, ':utf8';
use Benchmark qw/cmpthese/;
use Template;
use HTML::FillInForm;
use HTML::FillInForm::Lite;
print "Benchmark: HTML::FillInForm vs. HTML::FillInForm::Lite\n";
chdir $Bin;
my $t = Template->new({
ENCODING => 'UTF-8',
FILTERS => {
fillinform => [\&fillinform, 1],
fillinformlite => [\&fillinformlite, 1],
},
});
my $f = HTML::FillInForm->new;
my $fl = HTML::FillInForm::Lite->new;
my $filldata = {mail => 'foobar at example.com', name => '日本語の名前', tel => '123-456-789'};
cmpthese(-1, {
fillinall => sub {
$t->process("html/test.html", {
hoge => 'aha'
}, \my $output) or die $t->error;
$f->fill(\$output, $filldata);
},
fillinpart => sub {
$t->process("html/test_part.html", {
hoge => 'aha',
filldata => $filldata,
}, \my $output) or die $t->error;
},
fillinall_lite => sub {
$t->process("html/test.html", {
hoge => 'aha'
}, \my $output) or die $t->error;
$fl->fill(\$output, $filldata);
},
fillinpart_lite => sub {
$t->process("html/test_part_lite.html", {
hoge => 'aha',
filldata => $filldata,
}, \my $output) or die $t->error;
},
});
sub fillinform {
my ($context, $data, @options) = @_;
return sub {
my $html = shift;
$f->fill(\$html, $data, @options);
};
}
sub fillinformlite {
my ($context, $data, @options) = @_;
return sub {
my $html = shift;
$fl->fill(\$html, $data, @options);
};
}