Package: perl Version: 5.14.2-7 Severity: normal Very much simplified test case (I believe minimal) attached.
On my machine I get: Died at survey.cgi line 19. instead of the expected foo at survey.cgi line 22 main::run_template(255490788292995187) called at survey.cgi line 18 eval {...} called at survey.cgi line 18 ...propagated at survey.cgi line 19. because the plain die without arguments on line 19 isn't propagating the error (originally, it was inside a few more evals and subroutines, but this is much simpler). Note that it works if: you change "confess" to "die" you substitute in the value in place of the CGI->param call This brokeness is pretty fragile. Reducing down the several thousand line program to this was a PITA, the brokeness kept vanishing. -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (500, 'testing'), (200, 'unstable'), (150, 'stable'), (100, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.1.0-1-amd64 (SMP w/8 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages perl depends on: ii libbz2-1.0 1.0.6-1 ii libc6 2.13-26 ii libdb5.1 5.1.29-1 ii libgdbm3 1.8.3-10 ii perl-base 5.14.2-7 ii perl-modules 5.14.2-7 ii zlib1g 1:1.2.6.dfsg-1 Versions of packages perl recommends: ii netbase 4.47 Versions of packages perl suggests: ii libterm-readline-gnu-perl 1.20-2+b1 ii libterm-readline-perl-perl 1.0303-1 ii make 3.81-8.1 ii perl-doc 5.14.2-7 -- no debconf information
#!/usr/bin/perl -Tw use Carp qw(confess); use CGI; my $CGI; sub send_template; sub run_template; my $dat = <<DATA; survey_no=255490788292995187 DATA open my $fh, '<', \$dat or die "guess we don't have PerlIO"; $CGI = CGI->new($fh); close $fh; eval { run_template($CGI->param('survey_no')); }; die if $@; sub run_template { confess "foo"; }