#!/usr/local/bin/perl 

use File::Find;
use Time::Local;

my $year = (gmtime)[5];

my $yt   = timegm(0,0,0,1,0,$year);

$year += 1900;
my $last = $year-1;

print "This is $year\n";

# $expr = shift;

sub match
{
 if (/Copyright/i && /Nick/ && !/$year/)
  {
   print "$File::Find::dir/$file:$.:$_" 
  }
 return 0;
}

sub wanted
{
 my $write = -w $_;
 $File::Find::prune = 0;
 if (-T $_ && !/%$/ && !/\.bak/ && (stat($_))[9] >= $yt)
  {
   local $file   = ($_);
   local ($_);
   @ARGV = ($file);
   my $changed = 0; 
   $^I = '.bak';
   while (<>)
    {
     if (/Copyright/i && /Nick/ && s/--$year/-$year/)
      {
       warn "$File::Find::name:$.:$_"; 
       $changed++;
      }
     if (/Copyright/i && /Nick/ && /199[0-9]/ && !/$year/)
      {
       $changed++;
       unless (s/(199[0-9]-)199[0-9]/$1$year/)
        {
         unless (s/$last/$last-$year/)
          {
           unless (s/(199[0-9])/$1-$year/)
            {
             die "$File::Find::name:$.:$_" 
            }
          }
        }
       warn "$File::Find::name:$.:$_" 
      }
     print;
    }         
   if ($changed)
    {
     print "p4 edit $File::Find::name\n";
    }
   else
    {
     rename("$file.bak",$file) || die "Cannot rename $file.bak to $file:$!";
    }
  }
 elsif (-d $_)
  {
   # $File::Find::prune = 1 if ($_ eq 'mTk');
  }
}

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

find(\&wanted,@ARGV);
