Forum Webscript.Ru

Программирование => Perl => Тема начата: Andron от 11 Августа 2003, 10:06:26

Название: Просто?
Отправлено: Andron от 11 Августа 2003, 10:06:26
Совсем простая задача: посчитать слова в текстовом файле.
Результат поместить в другой файл.
Ну там_ например:

и - 125
в - 122
с - 100
...
перестройка - 1
Название: Просто?
Отправлено: Wyclef от 11 Августа 2003, 10:55:51
open(F, "words.txt") or die;
$/ = undef;
my $words = ;

my %seen;

foreach (split(/[^\\w-]+/, $words)) {
next unless /\\w/i;
$seen{lc($_)}++;
}

foreach (sort keys %seen) {
print "$_ - $seen{$_}\\n";
}
Название: Просто?
Отправлено: Andron от 11 Августа 2003, 15:57:46
Большое спаибо, Wyclef. Выглядит так, что работает правильно.
Вопрос на вскидку(для всех): Будет ли данный код правильно определять такие конструкции:
1. слова в скобках
2. и/или
3. текст не на английском со всякими äöüêßş и т.д.
Название: Просто?
Отправлено: Макс от 11 Августа 2003, 16:30:16
Andron
а самому попробовать религия не позволяет ?
Название: Просто?
Отправлено: Макс от 11 Августа 2003, 16:38:00
Кстати есть модуль Text::ExtractWords:

  use Text::ExtractWords qw(words_count words_list);

  my %hash = ();
  words_count(\\%hash, "test test the words_count function");
Название: Просто?
Отправлено: Wyclef от 11 Августа 2003, 16:42:57
Я не уверен, что мой пример вообще с русскими буквами работать будет... ;)))
Название: Просто?
Отправлено: NeoNox от 11 Августа 2003, 16:45:49
Будет а как и почему - ищите в ФАК
Название: Просто?
Отправлено: Wyclef от 11 Августа 2003, 16:56:18
NeoNox
Ага, ты меня успокоил :)
use locale;
[off]Когда писал - был уверен, что будет, а потом почему-то засомневался. Правильно засомневался... ))[/off]