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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     23 Jan 2004  16:10:25
 To : Maxim Fomin
 Subject : Re: HELP!.. return результата из рекурсивной функции ...
 -------------------------------------------------------------------------------- 
 
 Maxim Fomin -> All  @ Thu, 22 Jan 2004 09:32:25 +0300:
 
  MF> Приветствую вас, многоуважаемый ALL
 
  MF> Есть функция обхода дерева каталогов и чтения файлов описания.. 
  MF> Она рекурсивна .. см сырец ниже.
  MF> Проблема в том ЧТО Я БИТЫЙ ЧАС HЕ МОГУ ВЕРHУТЬ из нее РЕЗУЛЬТАТ обхода!
  MF> В функции все красиво выводится.. Как тока начинаю возвращать .. Hичего не
  MF> возвращает .. 
 
  MF> #!/usr/bin/perl
  MF> use strict;
 
  MF> sub folder {
  MF>  my $dir=shift;
  MF>  my %t;my @tt;
  MF>  
  MF>  
  MF>   return  unless $dir;
  MF>   opendir(DIR,$dir) or (warn "Can't opendir $dir: $!" and return 0);
  MF>    my @files=readdir(DIR);
  MF>   closedir(DIR);
  MF>   foreach (@files) {
  MF>   next if /^\.\.?$/;
  MF>   
  MF>   my $filename="$dir/$_";
  MF>  if (-d $filename) {
  MF>  # print "DIR: $filename\n";
  MF>  push @tt,folder($filename);
 
 Hу вот, положил ты результат folder($filename) в @tt.  А дальше что?
 Больше оно нигде не встречается, и радостно отправляет результат в
 /dev/null.  В результате у тебя возвращается только содержимое
 something.description директории верхнего уровня.  Если оно там было.
 
  MF>  }else{
  MF>  if($filename=~m!/(.description)$!){
  MF>  # print $filename."\n";
  MF>   open(FH,"< $filename") or die $!;
  MF>    while(<FH>){
  MF>       $filename=~m!^(.*/)!;
  MF>       push @{$t{$1}},$_;
  MF>    }
  MF>   close(FH) or die $!;
  MF>   }
  MF>  }
  MF> }
 
  MF> #my $j;
  MF> #foreach my $i (keys %t){
  MF> # for($j=$#{$t{$i}};$j>=0;$j--){
  MF> #  print "Path: $i $t{$i}[$j]\n";
  MF> # }
  MF> #}
 
  MF> return %t;
  MF> }
 
  MF> my $tt;
  MF> my $root=".";
 
  MF>  my %tt=folder($root);
  MF>  print %tt."\n";
  MF> ЛЮДИ ПОЖАЛУСТА ПОДСКАЖИТЕ ГДЕ Я ТУПЛЮ!!! Проект горит.. 
  MF> icq: 168815113
 -- 
 Artem Chuprina
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757
 --- ifmail v.2.15dev5.1
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: HELP!.. return результата из рекурсивной функции ...   Artem Chuprina   23 Jan 2004 16:10:25 
Архивное /ru.perl/11477b6528a9f.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional