#!/usr/bin/env perl
use v5.18;
use App::p5find qw(p5_doc_iterator print_file_linenum_line);
my @paths = (".");
my @words;
my $x;
push(@words, $x) while(($x = shift @ARGV) ne "--");
shift(@ARGV) if @ARGV && $ARGV[0] eq "--";
@paths = @ARGV if @ARGV;
for my $dir (@paths) {
my $iter = p5_doc_iterator($dir);
while ( defined ( my $doc = $iter->() ) ) {
my $statements = $doc->find("PPI::Statement") or next;
my $file = $doc->filename;
my %matched;
for my $it (@$statements) {
my $ln = $it->line_number;
my $fail = 0;
my $txt = "$it";
for my $w (@words) {
$fail = index($txt, $w) < 0;
last if $fail;
}
next if $fail;
$matched{$ln} = 1;
}
print_file_linenum_line( $file, \%matched );
}
}