in reply to How to modify a warning message within a sub?
I read about installing a __WARN__ signal handler, but that appears to require exposing $arrayRef to a wider scope.
No. Did you try? The trick is to install a local $SIG{__WARN__}:
sub compareLT105 { my $arrayRef = shift; { # bare block to narrow scope of local() local $SIG{__WARN__} = sub { chomp( my $msg = $_[0] ); print STDERR $msg," \$arrayRef = [qw(@{$arrayRef})]\n"; }; return 'true' if $arrayRef->[1] < 105; } return 'false'; } For 100 compareLT105 says: true For 106 compareLT105 says: false Argument "100A" isn't numeric in numeric lt (<) at warn.pl line 27. $a +rrayRef = [qw(3 100A)] For 100A compareLT105 says: true Argument "100B2" isn't numeric in numeric lt (<) at warn.pl line 27. $ +arrayRef = [qw(4 100B2)] For 100B2 compareLT105 says: true
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to modify a warning message within a sub?
by Marshall (Canon) on Aug 09, 2011 at 03:53 UTC |