PDA

Показать полную графическую версию : Perl search


Guest
09-03-2004, 11:22
Положим есть файл test.txt и в нём есть такие строки:
"Маша мыла раму"
"Мама мыла Машу"
"Тест"
Так вот надо чтоб програма проверяля каждую строку на наличие определённого слова и если слово "мыла" присутствует выводила бы строку на экран. В этом случае програма должна вывести:
Маша мыла раму
Мама мыла Машу
Как это реализовать? Инетресует сам маханизм поиска. Буду рад полезным ссылкам. Заранее благодарен.

antonym
09-03-2004, 11:59
open (FL, 'text.txt');
while(<FL>)
{
if (index($_,'мыла')>=0) {print $_}
}
close FL;


Это самый дубовый вариант, не учитывающий ни кодировки, ни регистр символов. И вообще, использующий переменную по умолчанию :-)

По поводу поиска посмотрите хотя бы это (http://www.perl.ru/go.cgi?action=viewnews&id=9)

Guest
09-03-2004, 12:35
Большое спасибо :-)

mrcnn
14-03-2004, 07:39
другой вариант поиска -- *с использованием регулярных выражений. Регулярные выражения - очень мощный инструмент работы с текстом.


open (FL, 'text.txt');

while(<FL>) {
if ($_ =~ /мыла/) {
*print $_;}
}
close FL;



если надо "мыла" заменить на "мало" используешь нечто подобное:


open (FL, 'text.txt');

while(<FL>) {
if ($_=~s/мыла/мало/) {
*print $_;}
}
close FL;



в винде это сработает нормально только если файл test.txt в кодировке dos. *если в koi или win потребуется перекодировка искомой строки или считываемого файла.
Перекодировку можно реализовать тоже с помощью регулярных выражений.

Исправлено: mrcnn, 7:41 14-03-2004




© OSzone.net 2001-2012