Bug#826563: perl: Apparent regression in TryCatch with stable update

Guillem Jover gjover at sipwise.com
Mon Jun 6 12:36:10 UTC 2016


Package: perl
Version: 5.20.2-3+deb8u5
Severity: serious
Control: affects -1 libtrycatch-perl

Hi!

We've noticed some code using the TryCatch module (libtrycatch-perl
package) that stopped working after the stable update. Setting as
serious as this looks like a regression for code that used to work,
and for which I don't see anything supposedly wrong with it (?), which
follows the documented pattern. Here's a small reproducer showing the
problem:

,---
$ cat trycatch.pl
#!/usr/bin/perl
use strict;
use warnings;
use TryCatch;

try {
    die "oops\n";
}
catch($e) {
    print "catch: $e";
}

1;

$ /trycatch.pl
catch: oops

$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libperl-dev libperl5.20 perl perl-base perl-modules
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/8580 kB of archives.
After this operation, 22.5 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 28659 files and directories currently installed.)
Preparing to unpack .../libperl5.20_5.20.2-3+deb8u5_amd64.deb ...
Unpacking libperl5.20 (5.20.2-3+deb8u5) over (5.20.2-3+deb8u4) ...
Preparing to unpack .../libperl-dev_5.20.2-3+deb8u5_amd64.deb ...
Unpacking libperl-dev (5.20.2-3+deb8u5) over (5.20.2-3+deb8u4) ...
Preparing to unpack .../perl_5.20.2-3+deb8u5_amd64.deb ...
Unpacking perl (5.20.2-3+deb8u5) over (5.20.2-3+deb8u4) ...
Preparing to unpack .../perl-base_5.20.2-3+deb8u5_amd64.deb ...
Unpacking perl-base (5.20.2-3+deb8u5) over (5.20.2-3+deb8u4) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up perl-base (5.20.2-3+deb8u5) ...
(Reading database ... 28660 files and directories currently installed.)
Preparing to unpack .../perl-modules_5.20.2-3+deb8u5_all.deb ...
Unpacking perl-modules (5.20.2-3+deb8u5) over (5.20.2-3+deb8u4) ...
Setting up libperl5.20 (5.20.2-3+deb8u5) ...
Setting up perl-modules (5.20.2-3+deb8u5) ...
Setting up perl (5.20.2-3+deb8u5) ...
Setting up libperl-dev (5.20.2-3+deb8u5) ...
Processing triggers for libc-bin (2.19-18+deb8u4) ...

$ ./trycatch.pl
Global symbol "$e" requires explicit package name at ./trycatch.pl line 11.
syntax error at ./trycatch.pl line 11, near ") {"
Execution of ./trycatch.pl aborted due to compilation errors.

# Modifying the code by making the catch use cuddled braces, fixes the
#  problem though

$ vi trycatch.pl
$ cat trycatch.pl
#!/usr/bin/perl
use strict;
use warnings;
use TryCatch;

try {
    die "oops\n";
} catch($e) {
    print "catch: $e";
}

1;

$ ./trycatch.pl
catch: oops

# It seems that removing the '\n' in the die also makes a difference.

$ cat trycatch.pl
#!/usr/bin/perl
use strict;
use warnings;
use TryCatch;

try {
    die "oops";
}
catch($e) {
    print "catch: $e";
}

1;

$ ./trycatch.pl
catch: oops at ./trycatch.pl line 7.
`---

Thanks,
Guillem




More information about the Perl-maintainers mailing list