Forum Webscript.Ru
Программирование => Perl => Тема начата: Andron от 11 Августа 2003, 10:06:26
-
Совсем простая задача: посчитать слова в текстовом файле.
Результат поместить в другой файл.
Ну там_ например:
и - 125
в - 122
с - 100
...
перестройка - 1
-
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";
}
-
Большое спаибо, Wyclef. Выглядит так, что работает правильно.
Вопрос на вскидку(для всех): Будет ли данный код правильно определять такие конструкции:
1. слова в скобках
2. и/или
3. текст не на английском со всякими äöüêßş и т.д.
-
Andron
а самому попробовать религия не позволяет ?
-
Кстати есть модуль Text::ExtractWords:
use Text::ExtractWords qw(words_count words_list);
my %hash = ();
words_count(\\%hash, "test test the words_count function");
-
Я не уверен, что мой пример вообще с русскими буквами работать будет... ;)))
-
Будет а как и почему - ищите в ФАК
-
NeoNox
Ага, ты меня успокоил :)
use locale;
[off]Когда писал - был уверен, что будет, а потом почему-то засомневался. Правильно засомневался... ))[/off]