
12.07.2006, 19:59
|
|
Участник форума
Регистрация: 31.08.2003
Сообщений: 177
Провел на форуме: 249275
Репутация:
22
|
|
Код:
#!C:/perl/bin/perl
###########################################################
# Кидаем этот файл в директорию с *.txt файлами и запускаем
# На выходе получается файл words.lst, в котором сложены все слова
# из всех найденых *.txt файлов (в данной директории) в алфавитном порядке
# (c) Rabid Rabbit 2006 ну практически только что :)
# я уже писал раньше такую же прогу но вот посеял гдето, пришлось написать новую с нуля :)
###########################################################
@fl=glob '*.txt';
foreach $fname (@fl){
$ansin=$fname;
# OEM в ANSI
$ansin=~tr/АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯЁабвгдежзийклмнопрсЄтєуЇфїх_ц_ч_ш_щъыьэюяё/__'_":┼╪_%_<_____''""--_T_>____р Ўў_¤_│ЁcЄ<┐-RЇабтвугфдхецжчзшищйклмнопс/;
print "$ansin\n";
open(ftxt,$fname) || die "Can't Open $fname: $!\n";
while (<ftxt>){
@words=split(/['"?!|.,\-():;\s]+/,$_);
foreach $word (@words){
$word=~s/\s+//gm;
if (length($word)>0){
# ANSI в OEM (это можно закоментировать если текст в OEM (виндовой cp-1251 кодировке))
$word=~tr/__'_":┼╪_%_<_____''""--_T_>____р Ўў_¤_│ЁcЄ<┐-RЇабтвугфдхецжчзшищйклмнопс/АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯЁабвгдежзийклмнопрсЄтєуЇфїх_ц_ч_ш_щъыьэюяё/;
# аналогично lc($words)
$word=~tr/QWERTYUIOPASDFGHJKLZXCVBNM/qwertyuiopasdfghjklzxcvbnm/;
# lc() для нац не потянет :)
$word=~tr/ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁЇ_Є_/йцукенгшщзхъфывапролджэячсмитьбюёї_є_/;
$wordlist{$word}=$word;
}
}
}
close(ftxt);
}
open(fout,'>words.lst') || die "Can't Create words.lst: $!\n";
foreach $key (sort keys %wordlist){
print fout "$key\n";
}
close(fout);
exit;
Еще могу накидать для сортировки, рандомизации, вылавливания дублей, цыфр, англицких, спецсимв и проч и проч. Таких "крутых" програм мне не жалко роздавать 
|
|
|