pmload1p
Show what files a given module loads at compile time
Overview
Given an argument of a module name, show all the files that are loaded directly or indirectly when the module is used at compile-time.
Examples
$ pmload IO::Handle/usr/local/devperl/lib/5.00554/Exporter.pm/usr/local/devperl/lib/5.00554/Carp.pm/usr/local/devperl/lib/5.00554/strict.pm/usr/local/devperl/lib/5.00554/vars.pm/usr/local/devperl/lib/5.00554/i686-linux/DynaLoader.pm/usr/local/devperl/lib/5.00554/i686-linux/IO/Handle.pm/usr/local/devperl/lib/5.00554/Symbol.pm/usr/local/devperl/lib/5.00554/i686-linux/IO/File.pm/usr/local/devperl/lib/5.00554/SelectSaver.pm/usr/local/devperl/lib/5.00554/i686-linux/Fcntl.pm/usr/local/devperl/lib/5.00554/AutoLoader.pm/usr/local/devperl/lib/5.00554/i686-linux/IO.pm/usr/local/devperl/lib/5.00554/i686-linux/IO/Seekable.pm$ cat `pmload IO::Socket` | wc -l4015$ oldperl -S pmload Tk/usr/lib/perl5/site_perl/Tk/Pretty.pm/usr/lib/perl5/Symbol.pm/usr/lib/perl5/site_perl/Tk/Frame.pm/usr/lib/perl5/site_perl/Tk/Toplevel.pm/usr/lib/perl5/strict.pm/usr/lib/perl5/Exporter.pm/usr/lib/perl5/vars.pm/usr/lib/perl5/site_perl/auto/Tk/Wm/autosplit.ix/usr/lib/perl5/site_perl/auto/Tk/Widget/autosplit.ix/usr/lib/perl5/site_perl/Tk.pm/usr/lib/perl5/i386-linux/5.00404/DynaLoader.pm/usr/lib/perl5/site_perl/auto/Tk/Frame/autosplit.ix/usr/lib/perl5/site_perl/auto/Tk/Toplevel/autosplit.ix/usr/lib/perl5/Carp.pm/usr/lib/perl5/site_perl/auto/Tk/autosplit.ix/usr/lib/perl5/site_perl/Tk/CmdLine.pm/usr/lib/perl5/site_perl/Tk/MainWindow.pm/usr/lib/perl5/site_perl/Tk/Submethods.pm/usr/lib/perl5/site_perl/Tk/Configure.pm/usr/lib/perl5/AutoLoader.pm/usr/lib/perl5/site_perl/Tk/Derived.pm/usr/lib/perl5/site_perl/Tk/Image.pm/usr/lib/perl5/site_perl/Tk/Wm.pm/usr/lib/perl5/site_perl/Tk/Widget.pm
Note
If the programmers used a delayed "require", those files won't show up. Furthermore, this doesn't show all possible files that get opened, just those that those up in %INC. Most systems have a way to trace system calls. You can use this to find the real answer. First, get a baseline with no modules loaded.
$ strace perl -e 1 2>&1 | perl -nle '/^open\("(.*?)".* = [^-]/ && print $1'/etc/ld.so.cache/lib/libnsl.so.1/lib/libdb.so.2/lib/libdl.so.2/lib/libm.so.6/lib/libc.so.6/lib/libcrypt.so.1/dev/null$ strace perl -e 1 2>&1 | grep -c '^open.*= [^-]'8
Now add module loads and see what you get:
$ strace perl -MIO::Socket -e 1 2>&1 | grep -c '^open.*= [^-]'24$ strace perl -MTk -e 1 2>&1 | grep -c '^open.*= [^-]'35
AUTHORS and COPYRIGHTS
Copyright (C) 1999 Tom Christiansen.
Copyright (C) 2006-2014 Mark Leighton Fisher.
Releases
13 releases since Debian 2.2 (Potato); the text changed 7 times.