#!/usr/bin/perl require 5.8.0; package filter; use Filter::Simple; FILTER { s/\bHi\b/Hello/g }; package main; BEGIN { $INC{'filter.pm'} = $0 } use Data::Dumper; sub eval ($) { open my $FH, '<', \$_[0]; local @INC = (sub {shift @INC; $FH}, @INC); do 'filtered eval.pl :-)'; }; $code = "use filter;\nprint 'Hi from eval!\n';die 'test'"; # filtered eval $ret = ::eval $code; print 'ret=',Dumper($ret),'err=',Dumper($@); # not filtered eval $ret = eval $code; print 'ret=',Dumper($ret),'err=',Dumper($@);