Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простой Поисковик в PERL 
:(
    Опции темы
V0lk0d@V
Дата 17.2.2005, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 21.10.2004

Репутация: нет
Всего: нет



Не подскажет как сделать определенные операции в 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
PM ICQ   Вверх
korob2001
Дата 17.2.2005, 05:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 6
Всего: 61



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().

Удачи.

Это сообщение отредактировал(а) korob2001 - 17.2.2005, 05:49


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.