2つのファイルが同じものか違うものかを判断するperl script

sub compare
{
   my $self = shift;
   my $f1 = shift;
   my $f2 = shift;
   return 0 if (! -f $f1 || ! -f $f2);

use Digest::MD5;

   open(FILE1, $f1) or return 0;
   open(FILE2, $f2) or return 0;

   binmode(FILE1);
   binmode(FILE2);

   my $ctx1 = Digest::MD5->new;
   my $ctx2 = Digest::MD5->new;

   # Could not work..
   #$ctx1 = addfile(*FILE1);
   #$ctx2 = addfile(*FILE2);

   while () {
       $ctx1->add($_);
   }
   while () {
       $ctx2->add($_);
   }

   close(FILE1);
   close(FILE2);

   my $digest1 = $ctx1->b64digest;
   my $digest2 = $ctx2->b64digest;

   if($digest1 ne $digest2) {
       return 0;
   }
   return 1; # same file
}

File::Compareとか使えばもっときれいに書けるっぽい。
そもそもMD5などしなくてもsysreadとかで
ちょっとずつ読む→違いが見つかった時点で判断
とかしたほうが速いかもしれない。