[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