Почему НЕ всегда срабатывает поиск подстроки?, Владимир, 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"; Подскажите, пожалуйста, что я не так сделал.
|
- Почему НЕ всегда срабатывает поиск подстроки?, ss, 11:29 , 11-Авг-20 (1)
>[оверквотинг удален] > { > print OUT $r; > $n++; > } > } > } > close OUT; > print "\nВсего ссылок в первом файле = $m, из них отсутствующих во > втором файле = $n"; > Подскажите, пожалуйста, что я не так сделал.покажите исходные файлы со строками и результат
- Почему НЕ всегда срабатывает поиск подстроки?, Владимир, 13:35 , 11-Авг-20 (4)
>[оверквотинг удален] >> print OUT $r; >> $n++; >> } >> } >> } >> close OUT; >> print "\nВсего ссылок в первом файле = $m, из них отсутствующих во >> втором файле = $n"; >> Подскажите, пожалуйста, что я не так сделал. > покажите исходные файлы со строками и результат <LI><A href="https://www.youtube.com/watch?v=2Rf01iJGS2g">TFT SPI 128*160</A> <LI><A href="http://compcar.ru/forum/showthread.php?t=6064">Видеокарта для Arduino (arduinoVideioCard).</A> <LI><A href="http://avr-start.ru/?p=3983">Управление симистором. Еще раз про таймеры. | AVR-START.RU</A> <LI><A href="https://www.youtube.com/watch?v=12rcdJKSGFc">Как устроен Python? > Детальный разбор</A> Вот эти строки содержатся в обоих файлах - они идентичны и именно эти строки не обрабатываются моим скриптом, во всяком случае, так как мне нужно. Я предполагаю, что это из-за содержимого самих строк, а конкретно в чем проблема не знаю.
- Почему НЕ всегда срабатывает поиск подстроки?, ss, 12:40 , 11-Авг-20 (2)
>[оверквотинг удален] > { > print OUT $r; > $n++; > } > } > } > close OUT; > print "\nВсего ссылок в первом файле = $m, из них отсутствующих во > втором файле = $n"; > Подскажите, пожалуйста, что я не так сделал.возможно это ссылки содержащие в себе вопросительный знак
- Почему НЕ всегда срабатывает поиск подстроки?, Владимир, 13:43 , 11-Авг-20 (5)
>[оверквотинг удален] >> print OUT $r; >> $n++; >> } >> } >> } >> close OUT; >> print "\nВсего ссылок в первом файле = $m, из них отсутствующих во >> втором файле = $n"; >> Подскажите, пожалуйста, что я не так сделал. > возможно это ссылки содержащие в себе вопросительный знак Да, в теле этих ссылок содержится вопросительный знак. И как это обойти?
- Почему НЕ всегда срабатывает поиск подстроки?, Аноним, 12:40 , 11-Авг-20 (3)
> if(/$p/)а перл нормально к таким подстановкам относится? В смысле спецсимволы дополнительно экранировать не надо? и если про поиск, то почему не выбрать все ссылки из файлов сразу, а потом сравнивать два массива?
- Почему НЕ всегда срабатывает поиск подстроки?, Владимир, 13:51 , 11-Авг-20 (6)
>> if(/$p/) > а перл нормально к таким подстановкам относится? В смысле спецсимволы дополнительно экранировать > не надо?Скорее всего в этом и проблема, но как эту ситуацию обработать я не знаю. > и если про поиск, то почему не выбрать все ссылки из файлов > сразу, а потом сравнивать два массива? Не вижу в этом смысла.
- Почему НЕ всегда срабатывает поиск подстроки?, Аноним, 14:00 , 11-Авг-20 (7)
> но как эту ситуацию обработать я не знаю.наверно так
m/\Q$p/ > Не вижу в этом смысла. ну да, простое сравнение строк не идет ни в какой сравнение с интерполированным регекспом :) особенно когда на самом деле там нет регекспа как такового, а производится поиск по строке
|