Помогите упростить : | Код | 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}; ... }
|
|