Pod::Coverage 加载(执行)模块以使其创建 subs 等。您将不得不以某种方式阻止您的 .pl 正常运行。
#!/usr/bin/perl
...
main(@ARGV) if !$ENV{NO_RUN};
1; # For do()
但是一旦你这样做了,就很容易了,因为你告诉 Pod::Coverage 要检查哪个包 ( package
) 和要检查哪个文件 ( pod_from
)。
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 1;
use Pod::Coverage qw( );
{
package the_script;
local $ENV{NO_RUN} = 1;
do "script.pl" or die $@;
}
my $pc = Pod::Coverage->new(
package => 'the_script',
pod_from => 'script.pl',
);
# P::C expects "require the_script;" to succeed.
$INC{"the_script.pm"} = 1;
my $coverage = $pc->coverage();
die $pc->why_unrated()
if !defined($coverage);
ok($coverage)
or diag("Not covered: ".join(', ', $pc->naked()));
1;
经测试。