http://www.perlmonks.org?node_id=342573


in reply to Re: Detecting if a script uses non-standard module
in thread Detecting if a script uses non-standard module

All modules are stored in directories contained in the @INC variable. It is not hard to create a perl script to find all modules within those directories. The easiest involves using glob, i.e.:

foreach my $path (@INC) { my @modules = glob "$path/*.pm"; foreach my $module (@modules) { print "You have module $module installed\n"; } }

A more elegant solution would involve using File::Find to recursively search the directories, and create the proper names for modules. (For instance, the Net::SMTP module would be called SMTP.pm under the directory Net)


Want to support the EFF and FSF by buying cool stuff? Click here.

Replies are listed 'Best First'.
Re: Re: Re: Detecting if a script uses non-standard module
by davido (Cardinal) on Apr 05, 2004 at 05:03 UTC
    That doesn't differentiate between which modules were installed as part of the Perl core, and which were installed after the fact. The OP is interested in knowing which modules were bundled with Perl. We already got a pretty good answer; perlmodlib has a mostly up-to-date listing of Perl's core modules. My counter-question was how to determine which modules I've installed that didn't ship with Perl as a core module.

    I guess, to your point, I could use File::Find to resurse Perl's @INC paths, keeping track of the names of all modules found, and then compare that list to the one provided in perlmodlib.


    Dave

      I guess, to your point, I could use File::Find to resurse Perl's @INC paths, keeping track of the names of all modules found, and then compare that list to the one provided in perlmodlib.

      Yes, you could do all sorts of things to this effect. You could take a list of modules which might be installed by default by your Perl distribution and compare it with what is installed. You've solved your own problem. <grins /> I was trying to provide suggestions to see whether or not it helped anyone.


      Want to support the EFF and FSF by buying cool stuff? Click here.