Category: Utility Scripts
Author/Contact Info doug at nextdimensioninc dot com

I put together this code to help migrating Perl scripts from one environment to another. The scripts are mostly CGIs, and I found it annoying and time consuming to either

  1. run the scripts to see what breaks
  2. or
  3. read through each script manually
. Using this little script you can check whether all needed modules are available.

Comments and suggestions are appreciated as always...

Update: Changed the logic in my if statement to reflect podmaster's CB suggestion...

use warnings;
use strict;

my $filename=shift || &help; # command line argument is perl script to
+ evaluate
my @modules;  # array of 'use' statements from code we are checking

open (IN,$filename) or die "couldn't open $filename for processing: $!

while (<IN>)
        if ((/^use/) and not (/strict/ || /warnings/))
                push @modules,$_;
close IN;
for my $code (@modules)
        my (undef,$library)=split(/ /,$code);   # get the module name
        $library=~s/;//;                        # clean up the name
        eval $code;
        if ($@)
                warn "couldn't load $library: $@","\n";
                print "$library looks ok\n";
sub help
        print <<"END";

This script finds all the "use" statements loading modules in the targ
+et perl
file (specified as a command line argument) and attempts to load them.
If there are problems loading the module, the error mesage returned is
+ printed.