http://www.perlmonks.org?node_id=151708


in reply to Re: Re: Unrolling recursion
in thread Unrolling recursion

For those who don't grok pseudocode here's a perl translation for directory traversal without recursion
my @stack = "."; while(my $cd = pop @stack) { opendir(my $dh, $cd) or die("bad dir - $!"); foreach (readdir($dh)) { next if /^\./; print $_.$/; push @stack, "$cd/$_" if -d "$cd/$_"; } }
and with recursion
&traverse("."); sub traverse { my $dir = shift; opendir(my $dh, $dir) or die("bad dir - $!"); foreach (readdir($dh)) { next if /^\./; print $_.$/; &traverse("$dir/$_") if -d "$dir/$_"; } }
That's a pretty neat 'trick' which I guess might be how optimising compilers implement some forms of recursion (or something).
HTH

broquaint