Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
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 exploiting the Monastery: (5)
As of 2015-07-06 00:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (68 votes), past polls