Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

To list all *.pm files included in a set of pl scripts

by Ananda (Pilgrim)
on Apr 23, 2007 at 21:00 UTC ( #611600=perlquestion: print w/ replies, xml ) Need Help??
Ananda has asked for the wisdom of the Perl Monks concerning the following question:

Is there a way already by which all included *pm files can be listed from a set of files/scripts in a folder/all scripts in general?
Ananda

Comment on To list all *.pm files included in a set of pl scripts
Re: To list all *.pm files included in a set of pl scripts
by shigetsu (Hermit) on Apr 23, 2007 at 21:43 UTC

    I think Module::Info offers most of the functionality desired.

    Excerpt from the according SYNOPSIS bit:

    use Module::Info; my $mod = Module::Info->new_from_file('Some/Module.pm'); my $mod = Module::Info->new_from_module('Some::Module'); my $mod = Module::Info->new_from_loaded('Some::Module'); [...] # Only available in perl 5.6.1 and up. # These do compile the module. [...] my @used = $mod->modules_used;

Re: To list all *.pm files included in a set of pl scripts
by mreece (Friar) on Apr 24, 2007 at 02:33 UTC
    i cooked this up a few months ago using Module::Dependency::Indexer ...
    #!/usr/local/bin/perl ## Usage: # find_perl_dependencies.pl <DIR> # use strict; use warnings; use Module::Dependency::Indexer; use Module::Dependency::Info; my $start_dir = $ARGV[0] || '.'; Module::Dependency::Indexer::setIndex('/tmp/perl_dependencies.dat'); Module::Dependency::Indexer::makeIndex($start_dir); my $dpidx = Module::Dependency::Info::retrieveIndex(); my $all = $dpidx->{allobjects}; my @todo = map { @{ $all->{$_}->{depends_on} } } grep { exists $all->{$_}->{depends_on} } keys %$all; my @modules; my %seen; while (my $pm = shift @todo) { next if $seen{$pm}++; push @modules, $pm; next unless exists $all->{$pm} and exists $all->{$pm}->{depends_on +}; my @reqs = grep { !$seen{$_} } @{ $all->{$pm}->{depends_on} }; push @todo, @reqs; } print "$_\n" foreach sort @modules;
    comments welcome..
    updated to add sample output:

    when run in a directory containing only this script:

    % perl find_perl_dependencies.pl .
    Module::Dependency::Indexer
    Module::Dependency::Info
    strict
    warnings
    

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://611600]
Approved by Old_Gray_Bear
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (12)
As of 2014-09-19 08:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (133 votes), past polls