On Sunday, November 2, 2003, at 06:19 AM, Rob Dixon wrote:

Jeff Westman wrotenews:[EMAIL PROTECTED]
Hi,

I've never liked "recursion" but of course there are times where it is
needed.

I'm not sure I would say recursion is "needed", but it sure makes some things simpler. I've never met a recursive function I couldn't rewrite iteratively though, often with some pain, of course.


Hi Jeff.

File::Find would do it for you, but the revursion is very
simple really:

  use strict;
  use warnings;

printdir('/usr');

sub printdir {

my $dir = shift;

    opendir DIR, $dir or die $!;
    my @dirs = grep /[^.]/, readdir DIR;
    closedir DIR;

    foreach (map "$dir/$_", @dirs) {
      if (-d) {
        printdir($_);
      }
      elsif (-f _) {
        print $_, "\n";
      }
    }
  }


# or iteratively...


sub printdir {
        my @dirs = (shift);
        
        while (@dirs) {
                my $dir = shift @dirs;

                opendir DIR, $dir or die "Directory error:  $!";
                my @new_dirs = grep /^[^.]/, readdir DIR;
                closedir DIR;
                
                foreach (map "$dir/$_",@new_dirs) {
                        if (-d) { push @dirs, $_; }
                        elsif (-f _) { print "$_\n"; }
                }
        }
}

James


-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to