Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexander Pashchenko                 2:5062/36      23 Nov 2004  01:03:10
 To : All
 Subject : Сортировка эх
 -------------------------------------------------------------------------------- 
 
 
 
 Программа для конвертации fidoconfig (описания эх) в goldarea.inc (пока просто в
 файл пишет)
 
 [--Это начало fconf2gded.pl--]
 
 sub rec{
    my $filename = shift;
    local *F;
    open(F, '<' . $filename) || die("$filename: $!");
    while(<F>){
      if(/^include/){
        my($x)=(split(' ',$_))[1];
        rec($x);
      }
      push(@echoes,$_) if /^echoarea/i;
    }
 close(F);
 }
 
 rec($ENV{'fidoconfig'});
 
 my %grp;
 my %rex = (
             V => qr/n5062.*/i,
             H => qr/hardw/i,
             L => qr/linux|unix/i,
 
           );
 
 for my $ech (@echoes) {
   for my $let (keys %rex) {
     if ($ech =~ $rex{$let}){
       push (@{$grp{$let}}, $ech);
       $ech=undef;
     }
   }
 }
 
 foreach $l (keys(%grp)){
   foreach $e (@{$grp{$l}}){
    print "$l=$e";
   }
 }
 
 [--А это кончало fconf2gded.pl--]
 
 В результате работы этой программы получаем  к примеру:
 [--Это начало file.txt--]
 V=EchoArea n5062.comm              c:\fido2\files\Echo\n5062.comm V=EchoArea
 n5062.commerce          c:\fido2\files\Echo\n5062.commerce V=EchoArea
 n5062.weather.announce c:\fido2\files\Echo\n5062.weather.announce -b H=EchoArea 
 su.hardw.chainik        c:\fido2\files\Echo\su.hardw.chainik H=EchoArea
 ru.hardw.check            c:\fido2\files\Echo\ru.hardw.check H=EchoArea
 ru.hardware.repair.tricks
 L=EchoArea ru.linux                c:\fido2\files\Echo\ru.linux L=EchoArea
 ru.linux.chainik        c:\fido2\files\Echo\ru.linux.chainik L=EchoArea
 ru.linux.talks          c:\fido2\files\Echo\ru.unix.bsd L=EchoArea ru.unix.linux
 c:\fido2\files\Echo\ru.unix.linux [--А это кончало file.txt--]
 
 В выход программы попали только эхи подпадающие под перечисленные регэкспы.
 Остальные не попали никуда :)
 
 Hепорядок. Хочу, чтобы эхи без регэкспов (все остальные) имели группу, к примеру
 O. Добавляю регэксп /.*/ (все остальные по моему разумению).
 
 *Тут то и начались косяки!*
 Выяснилось, что хэш храниться не в порядке объявления, а непонятно как, хотя
 некоторая логика присутствует.
 
 Для отладки делаем:
 foreach $key (keys(%rex)){ print "$key=$rex{$key}\n"}
 
 В результате:
 
 V=(?i-xsm:n5062.*)
 O=(?i-xsm:.*)
 G=(?i-xsm:games)
 H=(?i-xsm:hardw)
 L=(?i-xsm:linux|unix)
 
 *ВОПРОС: КАК МHЕ ЗАСТАВИТЬ ХЭШ ХРАHИТЬСЯ В ПОРЯДКЕ ОБЪЯВЛЕHИЯ???*
          ИЛИ КАК МHЕ ЗАДАТЬ МАСКУ "ВСЕ ОСТАЛЬHЫЕ"???
 Заранее благодарю за ответы!
 
 Gxis revido _All_!
 ... Win2k uptime: 0d 3h 48m 1s 803ms
 --- Phone(44373) Pager(005)3880173 E-mail(point212<at>mail.ru) ICQ(1911486)
  * Origin: В сети каждый показывает своё истинное лицо. (2:5062/36)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Сортировка эх   Alexander Pashchenko   23 Nov 2004 01:03:10 
 Re: Сортировка эх   Sergey Leschenko   23 Nov 2004 12:05:25 
Архивное /ru.perl/184541a2551c.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional