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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в коде парсера 
:(
    Опции темы
Aliance
Дата 3.6.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Доброго всем времени суток!

Имеется скрипт. Его суть - на входе 2 файла:
в первом берутся слова, из второго они удаляются, ненайденные записываются в третий файл.

Файл parse.pl:
Код

#!/usr/bin/perl
#(C)28.04.2006 Rideamus
#perl file_name.pl file1 file2 file3
#
#file1 - файл с которого берутся слова
#file2 - файл в котором удаляются все найденные
#file3 - файл куда записывается результат

use strict;
use warnings;

my $file1=$ARGV[0];
my $file2=$ARGV[1];
my $file3=$ARGV[2];

open (TEXT, $file1) || die "$!";
my @arr;

my $dcat=' ';

while (<TEXT>) {
      $dcat .= $_.' ';
  }

  $dcat =~ s/([\w\-]*)/ $1 /g;
  $dcat =~ s/\(/\\\(/g;
  $dcat =~ s/\)/\\\)/g;
  $dcat =~ s/\./\\\./g;
  $dcat =~ s/\$/\\\$/g;
  $_ = $dcat;

  push @arr,  split;


  close(TEXT);

  $dcat = ' ';
  open (TEXT, $file2) || die "$!";
  while (<TEXT>) {
        $dcat.= $_.' ';
    }

    $dcat.=' ';
    $dcat =~ s/([\w\-]*)/ $1 /g;

    close(TEXT);

    print "\n\n-----------------------------------------------\n\n";

    $| = 1;

    print $dcat."\n\n-------------------------------------------------\n\n";

    $| = 1;

    print $dcat."\n\n-------------------------------------------------\n\n";

    for (@arr) {
          my $a = $_;
          #print $a, ' | ';
           if($a !~ /^\s$/){
            print "word=\" ".$a." \";\n\n__________________________\n\n";
                $dcat =~ s/\s$a\s/ /g;
            print $dcat."\n\n#################################################################################\n\n";
    }
}


$dcat =~ s/ +/ /g;
print "$dcat\n\n";

print "OK";

open (TEXT, ">$file3") || die "$!";
print TEXT $dcat;

print "File created\n\n";


Почему-то не хочет работать с некоторыми словами smile
Подскажите, где трабла smile  
PM MAIL WWW ICQ Skype   Вверх
nitr
Дата 4.6.2006, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



думаю нужно

Код
...
use locale;
...


Добавлено @ 01:02 
покажите слова, которые не находит!
+ почитать можно perldoc perllocale

Уже обсуждалось, что \w+ (в вашем случае \w*) без use locale совпадает с простейшими англ. словами.
Необходима данная директива и ещё бывает нужно (имхо от системы зависит) use POSIX 'local_h'
после в "теле" программы, к примеру, setlocale(LC_CTYPE, $locale{Russian}); 


--------------------
PM   Вверх
korob2001
Дата 4.6.2006, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Посмотри ещё вот этот пост, я там всё подробно описал в коментариях. 


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


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

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


 




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


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

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