in reply to Re: utf8 whacks Carp in 5.12.1
in thread utf8 whacks Carp in 5.12.1
Yep, the problem is with the matching done inside of diagnostics.pm at the reported line. If before this line one adds
on line 552 of the diagnostics.pm then the problem goes away. Well, actually this problem goes away, instead the Carp.pm fails, again with regex matching.utf8::encode($_) if utf8::is_utf8($_);
Really weird problem. Things work fine for substitute but fail for regular matching.Global symbol "$c" requires explicit package name at test.pl line 8. Execution of test.pl aborted due to compilation errors (#1) (F) You've said "use strict" or "use strict vars", which indicates + that all variables must either be lexically scoped (using "my" or +"state"), declared beforehand using "our", or explicitly qualified to say which package the global variable is in (using "::"). BEGIN not safe after errors--compilation aborted at /usr/lib64/perl5/5 +.12.2/Carp.pm line 113.
Looks like this bug happens to be only in $SIG{__DIE__} handler. At least I could reproduce it in
use strict; use utf8; BEGIN { $SIG{__DIE__} = \&report; sub report { my $arg = shift; $arg = "'$arg'" unless $arg =~ /^-?[\d.]+\z/; warn("Done\n"); } } $c;
|
|---|