[Templates] BEGIN-time error in callback stops TT2
Brad Bowman
list@bereft.net
Wed, 21 Feb 2007 16:00:34 +1100
Hello,
The following program is a stripped down version of some
strange behaviour I hit. (The original failure was a "use")
#!/usr/bin/perl -w
use Template;
# use Carp qw(cluck);
my $t = Template->new;
$t->process(\"1\n[% 2 %]\n");
$t->process(\"3\n[% begin_die() %]\n",
{ begin_die =>
sub {
# cluck "here";
eval 'BEGIN { die "NO" }'
or 4;
}
});
print "done\n"
__END__
# output
perl /home/bsb/eval_begin_die.pl
1
2
I would expect to see "3\n4\n" after that but TT2 bails out silently.
Why is this happening?
It happens for me with both:
TT 2.14 + perl 5.8.8 + Linux
TT 2.15 + perl 5.8.8 + Windows
The cluck the output is:
1
2
here at /home/bsb/eval_begin_die.pl line 11
main::__ANON__() called at input text line 2
eval {...} called at input text line 4
Template::Document::__ANON__('Template::Context=HASH(0x82a6958)')
called at /usr/lib/perl5/Template/Document.pm line 155
eval {...} called at /usr/lib/perl5/Template/Document.pm line 153
Template::Document::process('Template::Document=HASH(0x842fe0c)',
'Template::Context=HASH(0x82a6958)') called at
/usr/lib/perl5/Template/Context.pm line 346
eval {...} called at /usr/lib/perl5/Template/Context.pm line 320
Template::Context::process('Template::Context=HASH(0x82a6958)',
'Template::Document=HASH(0x842fe0c)') called at
/usr/lib/perl5/Template/Service.pm line 97
eval {...} called at /usr/lib/perl5/Template/Service.pm line 94
Template::Service::process('Template::Service=HASH(0x827874c)',
'SCALAR(0x814978c)', 'HASH(0x835a4ac)') called at /usr/lib/perl5/Template.pm
line 71
Template::process('Template=HASH(0x8278518)', 'SCALAR(0x814978c)',
'HASH(0x835a4ac)') called at /home/bsb/eval_begin_die.pl line 15
Thanks,
Brad
--
Continue to spur a running horse. -- Hagakure