http://qs321.pair.com?node_id=585873


in reply to Re: Re: trapping -w warnings
in thread trapping -w warnings

I liked this enough that I bookmarked this in my delicious collection -- helped me debug a nasty problem.

I did things slightly differently though -- more localized, I think.

{ local $SIG{__WARN__} = sub { my @warnings = @_; foreach my $warning (@warnings) { print "got a warning: $warning\n"; } }; eval {'' =~ /$re/ }; }
cheers.

Replies are listed 'Best First'.
Re^4: trapping -w warnings
by bart (Canon) on Nov 24, 2006 at 18:47 UTC
    AFAIK $SIG{__WARN__} is only ever called with one parameter: the current warning. So your loop is most likely useless.

    You can print each warning as it comes along. But what I did was collect the warnings first so you can print them out as a block. That may be useful if you want just one block, for example when printing warnings in a HTML page on a web server.

Re^4: trapping -w warnings
by tphyahoo (Vicar) on Feb 20, 2007 at 15:28 UTC
    On second thought, I don't think I needed that eval block. This works fine too.
    use strict; use warnings; { local $SIG{__WARN__} = sub { my @warnings = @_; foreach my $warning (@warnings) { warn "in handleEncoding, got a warning: $warning\n"; } }; warn "blee"; warn "blah"; warn "bloo"; }