Показать сообщение отдельно

  #9  
Старый 12.07.2006, 19:59
Rabid Rabbit
Участник форума
Регистрация: 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;
Еще могу накидать для сортировки, рандомизации, вылавливания дублей, цыфр, англицких, спецсимв и проч и проч. Таких "крутых" програм мне не жалко роздавать
 
Ответить с цитированием