package Foo; use Bar; 1; #### package Bar; 0; #### use Test::More tests => 2; for (1 .. 2) { eval "require Foo"; ok( $@, "Saw error loading Foo" ); } #### 1..2 ok 1 - Saw error loading Foo not ok 2 - Saw error loading Foo # Failed test 'Saw error loading Foo' # at check_foo.pl line 5. # Looks like you failed 1 test of 2. #### my %have_module; sub have_module { my $mod = shift; if ( ! exists $have_module{$mod} ) { $have_module{$mod} = eval "require $mod"; } return $have_module{$mod}; }