Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

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?
  • Comment on To list all *.pm files included in a set of pl scripts

Replies are listed 'Best First'.
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/'); 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: # <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 .

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2023-03-27 09:36 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (63 votes). Check out past polls.