# foo.pl for (1..2) { eval "use bar"; print "attempt $_: ", ($@ || 'success'), "\n"; } # bar.pm eval "require baz"; if ($@) { die "bar will be unavailable because baz didn't load properly."; } 1; # baz.pm use missingdependency; #### # foo.pl for (1..2) { my %saveinc = %INC; eval "use bar"; if ($@) { for my $package(keys %INC) { delete $INC{$package} if ! exists $saveinc{$package}; } } print "attempt $_: ", ($@ || 'success'), "\n"; }