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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Yuriy Kaminskiy                      2:5020/517.21  09 Sep 2001  03:02:20
 To : Popov Nikita Valentinovich
 Subject : Re: Про получение списка фа йлов
 -------------------------------------------------------------------------------- 
 
 
 >>>>> On 12:48 08/9/2001, poksh@ccfit.nsu.ru writes:
  >> Вот состряпал код, который бы получал список файлов в 
  >> каталоге и подкоталогах, но что-то не хочет работать. Исправьте плз что 
  >> неправильно.
  >> &get_list("$SEARCH_DIR");
  >> sub get_list {
  >> local($SEARCH_ROOT, $search_sub) = @_;
  >> chdir("$SEARCH_ROOT$search_sub");
  >> local(@filenames) = <*>;
 
  Однако :-|
 
  >> local($file);
  >> foreach $file (@filenames) {
  >> if (-d $file && -r $file){
  >> if ($search_dir){&get_list (SEARCH_ROOT, "$search_sub$file");}
 
                                ^^
 
  >> else{&get_list (SEARCH_ROOT, $file);}
 
                    ^^
 
  >> }
  >> else {&search_in_file ("$file");}
  >> }}
  >> 
  >> 
  PNV> Вот рабочий вариант:
  PNV> -------------------------------------------------
  PNV> #!/usr/bin/perl -w                                    
  PNV> sub get_list {                                        
  PNV> my @list = ();                                    
  PNV> my $root = shift;                                 
  PNV> my $sub_root = shift || "";                       
  PNV> $root=~s#/$##;                                    
  PNV> $sub_root=~s#/$##;                                
  PNV> $sub_root.="/" if $sub_root;                      
  PNV> my @filenames = `ls $root/$sub_root`;             
 
  И того хуже.
 <...skip by yuk...>
  Мда. Клиника, однако :-|
  perldoc File::Find (входит в поставку как минимум 5.004_04+).
  Для тех, кто любит изобретать велосипед [или имеет крайне
 специфические потребности] -
  perldoc -f opendir readdir closedir
  perldoc perlsub
  perldoc perlre
 
  PNV> foreach my $file (@filenames) {                   
  PNV> chomp $file;                                  
  PNV> $file = "$sub_root$file";                     
  PNV> push(@list,$file);                            
  PNV> if ((-d "$root/$file") && (-r "$root/$file")){
  PNV> push(@list, get_list($root, $file));      
  PNV> }                                             
  PNV> }                                                 
  PNV> return @list;                                     
  PNV> }                                                     
  PNV> print join(' ',get_list(shift))."\n";
 
 -- 
 Yuriy Kaminskiy.
 
 --- Gnus v5.2.25/XEmacs 19.14
  * Origin: none (2:5020/517.21@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 Re: Про получение списка фа йлов   Yuriy Kaminskiy   09 Sep 2001 03:02:20 
Архивное /ru.perl/174273f7c0b75.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional