Minor issue: I think the line numbers that are reported are incorrect:
$ cat foo.pl
#!/usr/bin/env perl
use Carp;
carp('boo'); # This is line 3
$ exports foo.pl
foo.pl:
7: carp('boo'); # This is line 3
carp
# use Carp qw< carp >;
$
Am I reading that right? It looks like it tells me that the carp call is on line 7, but it is really on line 3. If I make this hack to exports, it seems to give me the line number I expect:
sub ReportExportUse {
my( $fh, @mods ) = @_;
my( @exports, %export_mod, %conflict );
GroupExports( \( @exports, %export_mod, %conflict ), @mods );
my %mod_export;
my $inuse = 0;
if( @exports ) {
my $match = MatchWords( @exports );
$match = qr/$match/;
local $_;
local $. = 0; # <------------- HACK
while( <$fh> ) {
Here is my new output:
foo.pl:
3: carp('boo'); # This is line 3
carp
# use Carp qw< carp >;
There is probably a better solution, and I suspect it has something to do with the seek.