Find where the eval warning is coming from:
#!/usr/bin/perl use strict; use warnings; # This directive causes Perl to warn you about dubious coding use Carp (); # This overrides the way warnings work, "cluck"ing so you know the # call stack at the time of the eval local $SIG{__WARN__} = &Carp::cluck; sub greetings { print "Hello" } eval 'sub greetings { print "Hi" }';
Changing the warning handler (the line local $SIG...etc) changes this:
$ ./s.pl Subroutine greetings redefined at (eval 1) line 1.
To this:
$ ./s.pl Subroutine greetings redefined at (eval 1) line 1. eval 'sub greetings { print "Hi" } ;' called at ./s.pl line 11