#!/usr/local/bin/perl -w

use File::Find;


sub match
{
 while (/sub\s*(\b[a-z]+\b)/g)
  {
   unless (exists $word{$1})
    {
     print STDERR "$1\n";
     $word{$1} = [] 
    }
   push(@{$word{$1}},"${File::Find::name}:$.");
  }
 return 0;
}

sub wanted
{
 $File::Find::prune = 0;
 if (-T $_ && !/%$/)
  {
   if (/\.pm$/)
    {
     local $file   = ($_);
     local ($_);  
     open($file,"<$file") || die "Cannot open $file:$!";
     while (<$file>)
      {           
       last if &match;
      }           
     close($file);
    }
  }
 elsif (-d $_)
  {
   $File::Find::prune = 1 if (/^(blib|Pod|HTML)$/);
  }
}

@ARGV = '.' unless (@ARGV);

find(\&wanted,@ARGV);

foreach (sort keys %word)
 {
  print "$_:",join(' ',@{$word{$_}}),"\n"; 
 }
