#!/usr/bin/perl use strict; use warnings; # "Friendly" version using eval BLOCK foreach my $mod (qw(CGI Test::Simple Foo::Bomb Test::More)) { (my $fn="$mod.pm")=~s|::|/|g; # Foo::Bar::Baz => Foo/Bar/Baz.pm if (eval { require $fn; 1; }) { print "Module $mod loaded ok\n"; } else { print "Could not load $mod. Error Message: $@\n"; } } #### Module CGI loaded ok Module Test::Simple loaded ok Could not load Foo::Bomb. Error Message: Can't locate Foo/Bomb.pm in @INC (@INC contains: c:/strawberry/perl/lib c:/strawberry/perl/site/lib .) at foo.pl line 6. Module Test::More loaded ok #### #!/usr/bin/perl use strict; use warnings; # "Quick-and-dirty" version using eval BLOCK foreach my $mod (qw(CGI Test::Simple Foo::Bomb Test::More)) { if (eval "require $mod; 1;") { print "Module $mod loaded ok\n"; } else { print "Could not load $mod. Error Message: $@\n"; } } #### Module CGI loaded ok Module Test::Simple loaded ok Could not load Foo::Bomb. Error Message: Can't locate Foo/Bomb.pm in @INC (@INC contains: c:/strawberry/perl/lib c:/strawberry/perl/site/lib .) at (eval 5) line 1. Module Test::More loaded ok