in reply to Tracking down uninitialized values...

You could do this:
use strict; use warnings; use Carp; # Configure the warn signal handler to print the stack trace provided +by Carp. $SIG{__WARN__} = sub {print STDERR Carp::longmess(@_); }; run(); sub run { my $code = eval 'sub { my $a = 1 - undef; };'; $code->(); }
The output is:
Use of uninitialized value in subtraction (-) at (eval 1) line 2. main::__ANON__() called at pm564376.pl line 14 main::run() called at pm564376.pl line 8