1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
#!/usr/local/bin/perl
use Getopt::Std;
my %opt;
use File::Find;
getopts("Flc",\%opt);
$expr = shift unless ($opt{'F'});
sub match
{
if ($unsure)
{
return 1 unless (/#!.*perl/);
$unsure = 0;
}
if ($opt{'F'})
{
if (/\bfont\b.*(["'])(-[^-]*){2,13}\1/i)
{
if ($opt{'l'})
{
print "$File::Find::dir/$file\n";
return 1;
}
$count++;
unless ($opt{'c'})
{
print "$File::Find::dir/$file:$.: $_"
}
}
}
elsif (/\Q$expr\E/o)
{
if ($opt{'l'})
{
print "$File::Find::dir/$file\n";
return 1;
}
$count++;
unless ($opt{'c'})
{
print "$File::Find::dir/$file:$.: $_"
}
}
return 0;
}
sub wanted
{
$File::Find::prune = 0;
if (-T $_ && !/%$/)
{
local $unsure = !/\.p[ml]$/;
local $file = ($_);
local ($_);
local $count = 0;
open($file,"<$file") || die "Cannot open $file:$!";
while (<$file>)
{
last if &match;
}
close($file);
if ($opt{'c'} && $count)
{
print "$File::Find::dir/$file: $count\n"
}
}
elsif (-d $_)
{
$File::Find::prune = 1 if ($_ eq 'blib');
}
}
@ARGV = '.' unless (@ARGV);
find(\&wanted,@ARGV);
|