$num_domains = scalar @domains; while ($num_domains > '0') { # Start Loopy Code [blah] my $new_domain = shift @domains; [blah] $num_domains = scalar @domains; # get the size of array } #### for ( 0 .. $#@domains ) { # do stuff } # or for my $root_domain ( @domains ) { # blah push @domains, @new_domains; } #### my $root = 'd:/perl/'; my ( @dirs, @fails, @files); @dirs = ( $root ); for my $dir ( @dirs ) { opendir DIR, $dir or die $!;#do { push @fails, $dir; next }; while ( $_ = readdir DIR ) { next if -s "$dir/$_"; do{ push @dirs, "$dir/$_"; next } if -d "$dir/$_" and not m/^\.\.?$/; do{ push @files, "$dir/$_"; next } if -f "$dir/$_"; } } print "$_\n" for @dirs;