#!/usr/bin/env perl
sub
getpac {
my
$file
=
shift
;
my
$filecont
= read_file(
$file
);
$filecont
=~ /
package
\s*(.*?);/s or
return
;
my
$pac
= $1;
$pac
=~ /\s+(.*)$/;
return
$1;
}
my
@files
= File::Find::Rule->file()->name(
'*.pm'
,
'*.pod'
)->in(
'lib'
);
my
%docsyms
;
for
my
$file
(
@files
){
my
$package
= getpac(
$file
) or
next
;
my
$pc
= Pod::Coverage->new(
package
=>
$package
);
my
%allsyms
=
map
{
$_
=> 1}
$pc
->_get_syms(
$package
);
my
$podarr
=
$pc
->_get_pods();
next
if
!
$podarr
;
for
my
$sym
(@{
$podarr
}){
$docsyms
{
$sym
}{
$package
} =
$file
if
$allsyms
{
$sym
};
}
}
my
@lines
;
for
my
$sym
(
sort
keys
%docsyms
){
for
my
$pac
(
sort
keys
%{
$docsyms
{
$sym
}}){
push
@lines
, {
symbol
=>
$sym
,
package
=>
$pac
};
}
}
my
$tt
= Template->new({})
||
die
Template->error(),
"\n"
;
$tt
->process(\
*DATA
, {
lines
=> \
@lines
})
||
die
$tt
->error(),
"\n"
;