Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Простой Поисковик в PERL


Автор: V0lk0d@V 17.2.2005, 02:52
Не подскажет как сделать определенные операции в Perl. Я его только недавно начал учить и не очень хорошо разбираюсь. Мне надо сделать две вещи:
1. Проверить предложение на определенные слова и если они есть их из предложения удалить а все остальные сохранить в файл.
У меня есть список этих слов в stopwords.txt они там каждое слово в отдельной строке.
Я так понимаю начало будет такое:
Код

#!/usr/bin/perl -w
$line = <STDIN>;
chomp $line;

А потом $line надо проверить на все слова в stopwords.txt(их там около 190) но как это сделать я не знаю. Я предполагаю надо использовать Regular Expressions.

2. Оставшиеся слова которые прошли первую проверку и сохраненные во временный файл надо проверить с помощью Porter's Stemming алгоритм. Porter.pl у меня есть и надо просто оставшиеся слова передать ему но я что то не знаю как в Perl связь между файлами происходит. Как вызвать методы одного файла в другом.

Зарание благодарен smile

Автор: korob2001 17.2.2005, 05:49
1. Регулярные выражения тебе помогут. Предположим файл stopwords.txt содержит следующие слова:

fuck
suck
fucking

Пользователь вводит строку: Stop fucking messages! , нам нужно вырезать те слова из этого предложения, которые содержатся в файле stopwords.txt, а затем чистое предложение нужно добавлять в файл after.txt
Напиши такой код, если будет нужно, то доработай его сам.
Код

#!/usr/bin/perl -w
use strict;
my $mess;
while ( 1 ) {
   print "Please enter your message: ";
   chomp( $mess = <STDIN> );
   last if length( $mess ) > 10;
   print "Small message. Minimum 10 chars for one message!!!\n";
}

open( F, "< stopwords.txt") or die $!;
open( W, ">> after.txt") or die $!;
   while (  my $pat = <F>  ) {
         chomp( $pat );
         $mess =~ s/\s*\b$pat\b\s*/ /gi;
   }
   print W $mess, "\n";
close( W );
close( F );

После выполнения это программы в файл after.txt добавится такая строка: Stop messages!

2. Читай документацию к модулю или классу. Если нужно просто подключить файл к проекту, то воспользуйся require().

Удачи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)