#!/usr/bin/perl
our
$VERSION
=
'1.10'
;
unless
(
@ARGV
) {
pod2usage(
msg
=>
'Please supply at least one filename to analyze'
);
exit
;
}
my
(
$object
,
$method
);
my
@classes
=
qw( Module::Extract::Use Module::ExtractUse )
;
my
%methods
=
qw(
Module::Extract::Use get_modules
Module::ExtractUse extract_use
)
;
foreach
my
$module
(
@classes
) {
eval
"require $module"
;
next
if
$@;
(
$object
,
$method
) = (
$module
->new,
$methods
{
$module
} );
}
die
"No usable file scanner module found; exiting...\n"
unless
defined
$object
;
foreach
my
$file
(
@ARGV
) {
unless
( -r
$file
) {
printf
STDERR
"Could not read $file\n"
;
next
;
}
dump_list(
$file
,
sort
$object
->
$method
(
$file
) );
}
BEGIN {
sub
dump_list {
my
(
$file
,
@modules
) =
@_
;
printf
"Modules required by %s:\n"
,
$file
;
my
(
$core
,
$extern
) = ( 0, 0 );
foreach
my
$module
(
@modules
) {
printf
" - $module%s\n"
,
$corelist
?
do
{
my
$v
= Module::CoreList->first_release(
$module
);
$core
++
if
$v
;
$v
?
" (first released with Perl $v)"
:
''
;
}
:
do
{
$extern
++;
''
}
}
printf
"%d module(s) in core, %d external module(s)\n\n"
,
$core
,
$extern
;
}
}