in reply to Bug with Carp and $!/$?
The require line that you finger is Perl's delayed loading of Carp::Heavy. Loading that involves I/O, compilation, etc. All of which are likely to reset $!.
And indeed you can test it with comparing the output of the following script:
All things considered I don't think your assumption about Carp was off base. (It was wrong, it is undocumented, but it is a reasonable and possibly useful feature.) I would suggest submitting a patch to Carp that captures $! before the require and then resets it afterwards. Also create a test that checks that $! is preseved through a croak and a confess and submit that as well.#!/appl/cpc/bin/perl -w use strict; use warnings; use Carp; require Carp::Heavy; # Avoid delayed loading resetting $! $!=10; $?=9; croak "$!: $?";
|
|---|