Написал скрипт по поиску дублирующих ссылок в двух 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";
Подскажите, пожалуйста, что я не так сделал.