![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| nerv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
возикла следующая проблема.
есть 2 текстовых файла *.txt. необходимо организовать поиск подстрок из одного файла в строках другого. срандартные операции типа index, !~s, ~s и проч. напроч отказываются работать со строковыми переменными такого типа. работают только в том случае, если исследуемые строку и подстроку прописать в теле программы. а мне бы очень хотелось (это необходимо) этого избежать |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Могут работать /\Q$_\E/.
Только оно не за чем, если просто по подстроке, а не по шаблону. Используй index. |
|||
|
||||
| nerv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.3.2007 Репутация: нет Всего: нет |
index не пашет. вот это работает:
$a="wtdfwefdhgvhvhhfhbvkerb"; print '$a=',$a,"\n\n"; $s="fdh"; print '$s=',$s,"\n\n"; $pos=-1; while(($pos=index($a,$s,$pos))>-1) { print "найдено в позиции $pos\n"; $pos++; } print "\n\n\n"; а это нет: $q=@mas_1[2]; print '$q=',$q,"\n\n"; $w=@mas_2[0]; print '$w=',$w,"\n\n"; $pos_=-1; while(($pos_=index($q,$w,$pos_))>-1) { print "найдено в позиции $pos_\n"; } здесь @mas_1[2] и @mas_2[0] это строки в массивах строк, записанных в 2х соответствующих файлах |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
>cat > a1.txt
test1 test2 ^C >cat > a2.txt sdvkbsafvlksanbv swvljksabvtest1aefchweflh swfhwslhvrf test1 asefheafj test ^C >grep -fa1.txt a2.txt swvljksabvtest1aefchweflh test1 |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Ребята "давайте жить дружно"
Форум многофункционален ;) - проще говоря, подсветку сделайте для код... Надеюсь как это делается ненадо учить... |
|||
|
||||
| amg |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Во-первых, $pos_++; пропущено (а то будет бесконечный цикл в случае нахождения подстроки). Во-вторых, chown $w; (или chown @mas_2;) делал? Если нет, то $w будет оканчиваться символом "\n", который в строке $q если и присутствует, то только в самом конце, и поэтому, скорее всего, такая $w в $q не будет обнаружена. |
||||
|
|||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
"index" не пашет, а сам пишешь "index". |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |