Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Упростить линейный алгоритм, просмотр дерева каталогов в глубину 
:(
    Опции темы
nIkTo
Дата 31.3.2010, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Помогите упростить :
Код

sub linear{
  my $self = shift;
  my ($max_depth, $directory) = @_;
  
  my %directories = ($directory => 0);
  my @dirs = ();
  
  while ((@dirs = keys(%directories)) and (my $directory = shift(@dirs))) {
    my $current_depth = $directories{$directory};
    delete $directories{$directory};
    next if ($current_depth > $max_depth);
    
    my @entries = ();
    eval {
      @entries = $self->dir($directory);
    };
    
    next unless @entries;
    
    for (parse_dir(\@entries)) {
      my ($name, $type, $size, $mtime, $mode) = @$_;
      
      next if (($name eq '.') or ($name eq '..'));
      
      if ($type eq 'd') {
        open(OUT, '>>linear.log');
        print OUT $directory."/".$name."\n";
        close(OUT);
        $directories{$directory."/".$name} = $current_depth+1;
      }
    }
  }
}


Мне не нравится этот кусок :
Код

  while ((@dirs = keys(%directories)) and (my $directory = shift(@dirs))) {
    my $current_depth = $directories{$directory};
    ...
  }

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0365 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.