The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"HELP!!! Как ограничить рекурсивное сканирование??"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"HELP!!! Как ограничить рекурсивное сканирование??"
Сообщение от Фомин Максим Искать по авторуВ закладки on 29-Июл-04, 12:45  (MSK)
Прога сканирует дерево каталогов (Использование File::Find исключено). И заполняет структуру для последующей обработки..
Собственно проблема. Мне нужно онраничить ход рекурсии наличием в обрабатываемой папке файла .description Вроде все дела правильно, но сканирование просто выдает какой то бред.. :(

собссно скрипт.. точнее проблемная часть

#!/usr/bin/perl
use strict;
use File::Basename;
use File::Find;
use Fcntl;
use configure; # импорт $DFNAME это файл ограничитель (.description)
               #        $TARGET это точка старта сканирования
use POSIX qw(locale_h);
setlocale(LC_CTYPE,'ru_RU.KOI8-R');

sub fiD # поиск в текущей папке ограничителя
{
opendir DIR,shift or die "fiD(): Cant open $!\n";
my $file=grep {/^$DFNAME/} readdir DIR;
closedir DIR or die "fiD(): Cant close $TARGET/OS $!\n";
return $file;
}

my (чsc,%files,╨ck,$fl,$ell);

sub folder {
my $dir=shift;
return  unless $dir;
opendir(DIR,$dir) or (warn "Can't opendir $dir: $!" and return 0);
   my @files=readdir(DIR);
closedir(DIR);
  foreach (@files) {
     next if /^\.\.?$/;

      if (-d $filename) {
        print qq(Folder: $filename\n);
        folder($filename);
         $back{$filename}=$dir;
         $fl=0;
      }else{
        my $dfn="$dir/$DFNAME";
        my $path=dirname($filename);
        my $name=basename($filename);
        if(-e $dfn){
         unless($fl){
          open(FH,"< $dfn") or die $!;
           push @{$desc{$path}},$_ while(<FH>);
          close(FH) or die $!;
          $fl++;
         }
        push @{$files{$path}},$name if $filename ne $dfn;
       }
     }
    }
}

folder($TARGET);

Млин где в рекурсии поставить ограничение??! Я уже замахался .. подскажите народ плззззззз!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "HELP!!! Как ограничить рекурсивное сканирование??"
Сообщение от pikachu Искать по авторуВ закладки(ok) on 29-Июл-04, 12:56  (MSK)
>Прога сканирует дерево каталогов (Использование File::Find исключено). И заполняет структуру для последующей
>обработки..
>Собственно проблема. Мне нужно онраничить ход рекурсии наличием в обрабатываемой папке файла
>.description Вроде все дела правильно, но сканирование просто выдает какой то
>бред.. :(
>
>собссно скрипт.. точнее проблемная часть
>
>#!/usr/bin/perl
>use strict;
>use File::Basename;
>use File::Find;
>use Fcntl;
>use configure; # импорт $DFNAME это файл ограничитель (.description)
>            
>   #        
>$TARGET это точка старта сканирования
>use POSIX qw(locale_h);
>setlocale(LC_CTYPE,'ru_RU.KOI8-R');
>
>sub fiD # поиск в текущей папке ограничителя
>{
>opendir DIR,shift or die "fiD(): Cant open $!\n";
> my $file=grep {/^$DFNAME/} readdir DIR;
>closedir DIR or die "fiD(): Cant close $TARGET/OS $!\n";
> return $file;
>}
>
>my (чsc,%files,╨ck,$fl,$ell);
>
>sub folder {
> my $dir=shift;
> return  unless $dir;
> opendir(DIR,$dir) or (warn "Can't opendir $dir: $!" and return 0);
>   my @files=readdir(DIR);
> closedir(DIR);
>  foreach (@files) {
>     next if /^\.\.?$/;
       my $filename="$dir/$_";  # забыл сорри
>      if (-d $filename) {
>        print qq(Folder: $filename\n);
>        folder($filename);
>         $back{$filename}=$dir;
>         $fl=0;
>      }else{
>        my $dfn="$dir/$DFNAME";
>        my $path=dirname($filename);
>        my $name=basename($filename);
>        if(-e $dfn){
>         unless($fl){
>          open(FH,"< $dfn")
>or die $!;
>           push @{$desc{$path}},$_ while(<FH>);
>          close(FH) or
>die $!;
>          $fl++;
>         }
>        push @{$files{$path}},$name if $filename
>ne $dfn;
>       }
>     }
>    }
>}
>
>folder($TARGET);
>
>Млин где в рекурсии поставить ограничение??! Я уже замахался .. подскажите народ
>плззззззз!


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "HELP!!! Как ограничить рекурсивное сканирование??"
Сообщение от Wizard emailИскать по авторуВ закладки(??) on 05-Авг-04, 08:14  (MSK)
может добваить что-то типа
if ( -f '.description' ) { next}
??
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру