Написал скрипт по поиску дублирующих ссылок в двух htm файлах - берется ссылка из первого файла и ищется во втором эта найденная в первом. 
Если не находится, то в результирующий файл записывается строка из первого файла из которой выделена искомая подстрока.
По задумке в выходном файле должны остаться только те строки из первого файла, которые содержат ссылки отсутствующие во втором файле.
На практике же результат получился частичный - да часть отсеивается, но есть повторяющиеся.
И я не могу понять почему это происходит. Я сравнивал эти оставшиеся строки с помощью текстового редактора (Far) - строки идентичны, а m// не находит их во втором файле.Вот мой скрипт:
my $NameFile = shift @ARGV;
open (FH, "<$NameFile") or die ("Cannot open file \"$NameFile\"");
my @array=<FH>;
close FH;
$NameFile = shift @ARGV;
open (FH, "<$NameFile") or die ("Cannot open file \"$NameFile\"");
my @array2=<FH>;
close FH;
open (OUT, ">Test.tmp") or die ("Cannot open file Test.tmp");
my ($m,$n,$f)=0;
my $p;
foreach my $r (@array) {
  if($r=~/href="(.+?)"/)#ищем строку, содержащую ссылку
  {
    $m++;
    $p=$1;
    print "$p\n";
    $f=0;
    foreach (@array2)#ищем строку, содержащую ранее найденную ссылку 
    {
      if(/$p/) {print "$_\n"; $f=1;}
    }
    if($f==0)#если нет дублирующих ссылок
    {
      print OUT $r;
      $n++;
    }
  }
}
close OUT;
print "\nВсего ссылок в первом файле = $m, из них отсутствующих во втором файле = $n";
Подскажите, пожалуйста, что я не так сделал.