The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Почему НЕ всегда срабатывает поиск подстроки?, !*! Владимир, 11-Авг-20, 10:05  [смотреть все]
Написал скрипт по поиску дублирующих ссылок в двух 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";

Подскажите, пожалуйста, что я не так сделал.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру