use strict; use warnings; use Carp; local $SIG{__WARN__} = sub { if ($_[0] =~ /Use of uninitialized value in regexp compilation/) { confess $_[0]; } else { warn @_; } }; print "x".undef, "\n"; printf "matched: %s\n" , ( 'x' =~ undef() ? 'yes' : 'no' ) ; __END__ Use of uninitialized value in concatenation (.) or string at 1.pl line 14. x Use of uninitialized value in regexp compilation at 1.pl line 16. at 1.pl line 7. main::__ANON__('Use of uninitialized value in regexp compilation at 1.pl line...') called at 1.pl line 16