Skip to content

Commit 74f7226

Browse files
committedNov 2, 2016
Simple script to scan for perl "use" statements to generate a cpanfile
Signed-off-by: Pedro Melo <melo@simplicidade.org>
1 parent 3ba11dd commit 74f7226

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed
 

Diff for: ‎bin/x-perl-scan-uses

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env perl
2+
3+
use strict;
4+
use warnings;
5+
use Path::Class;
6+
7+
my @dirs = @ARGV;
8+
push @dirs, '.' unless @dirs;
9+
10+
my %modules;
11+
12+
for my $dir (@dirs) {
13+
$dir = dir($dir);
14+
15+
$dir->recurse(callback => sub {
16+
my ($f) = @_;
17+
return if $f->is_dir;
18+
return unless $f->basename =~ /\.(pm|t)$/;
19+
20+
_scan_file_for_uses($f);
21+
});
22+
}
23+
24+
printf('% -40s = 0%s', $_, "\n") for grep { ! /^E\d?:?/ } grep { ! /^(Digito|ENG|ESP|Evolui|FAQ|EvoluiESP|MPT|LMS|Prodigio|MyTK):?/ } sort keys %modules;
25+
26+
sub _scan_file_for_uses {
27+
my $fh = shift->openr;
28+
while (<$fh>) {
29+
next if /^\s*use\s+(vars|utf8|lib|overload|version|strict|warnings|feature|encoding|5\.\d+)\b/;
30+
print STDERR " parse '$1'\n", next if /^\s*use\s+(?:parent|base)\b(.*);/;
31+
$modules{$1}++ if /^\s*use\s+([a-zA-Z0-9:]+)/;
32+
}
33+
}

0 commit comments

Comments
 (0)
Please sign in to comment.