5
module_info - find informations about modules
9
module_info [B<-a>] [B<-s>] [B<-p>] [B<-m>] MODULE|FILE...
13
List information about the arguments (either module names in the form
14
C<Module::Name> or paths in the form C<Foo/Bar.pm> or C<foo/bar.pl>).
16
By default only shows module name, version, directory, absolute path
17
and a flag indicating if it is a core module. Additional informations
18
can be requested through command line switches.
24
Show subroutines created by the module.
28
Show packages created by the module.
32
Show modules C<use()>d by the module.
36
Equivalent to C<-s -p -m>.
40
Mattia Barbon <MBARBON@cpan.org>
52
my( $show_subroutines, $show_modules, $show_packages, $show_all );
54
GetOptions( 's' => \$show_subroutines,
55
'p' => \$show_packages,
56
'm' => \$show_modules,
60
$show_subroutines ||= $show_all;
61
$show_modules ||= $show_all;
62
$show_packages ||= $show_all;
66
foreach my $module (@ARGV) {
70
$info = Module::Info->new_from_file($module);
73
$info = Module::Info->new_from_module($module);
77
warn "Can't create Module::Info object for module '$module'";
82
$info->die_on_compilation_error(1);
84
my $name = $info->name || $module;
85
my $version = $info->version || '(unknown)';
86
my $dir = $info->inc_dir;
87
my $file = $info->file;
88
my $is_core = $info->is_core ? "yes" : "no";
104
@modules_used = $info->modules_used if $show_modules;
105
%packages_created = $info->package_versions if $show_packages;
106
%subroutines = $info->subroutines if $show_subroutines;
109
warn "Compilation failed for module '$module'";
114
###########################################################################
116
###########################################################################
117
if( $show_modules ) {
118
print "\nModules used:\n";
119
foreach my $m (sort @modules_used) {
122
print " (none)\n" unless @modules_used;
125
###########################################################################
127
###########################################################################
128
if( $show_packages ) {
129
print "\nPackages created:\n";
130
foreach my $p (sort keys %packages_created) {
132
print +( defined( $packages_created{$p} ) ?
133
$packages_created{$p} :
137
print " (none)\n" unless keys %packages_created;
140
###########################################################################
142
###########################################################################
143
if( $show_subroutines ) {
144
print "\nSubroutines defined:\n";
147
sort { ( $a->[0] cmp $b->[0] ) || ( $a->[1] cmp $b->[1] ) }
149
my($package, $subname) = ($_ =~ m/^(.*)?::(\w+)$/);
150
warn "Strange subroutine '$_'"
151
unless $package || $subname;
152
$package ||= '(unknown)';
153
$subname ||= '(unknown)';
154
[ $package, $subname ];
156
my $prev_package = ':'; # impossible
157
foreach my $s (@subroutines) {
158
my($package, $subname) = @$s;
159
if($prev_package ne $package) {
160
$prev_package = $package;
167
print " (none)\n" unless %subroutines;