do 'stat.pl'; #### eval `cat stat.pl`; #### do ’stat.pl’; #### eval ‘cat stat.pl‘; #### # y.pl use strict; use warnings; use diagnostics; do 'x.pl'; print 'do: ', +( $@ ? $@ : 'ok' ), "\n"; eval `cat x.pl`; print 'eval: ', +( $@ ? $@ : 'ok' ), "\n"; __END__ do: ok Variable "$x" is not imported at (eval 2) line 1 (#1) (F) While "use strict" in effect, you referred to a global variable that you apparently thought was imported from another module, because something else of the same name (usually a subroutine) is exported by that module. It usually means you put the wrong funny character on the front of your variable. eval: Global symbol "$x" requires explicit package name at (eval 2) line 1.