use strict; sub recursiveReadDir { my ($dir) = @_; my @res; my $f = ''; my $ff = ''; local (*D); print "Reading: $dir ...\n"; opendir(D, $dir)|| die "can't opendir $dir: $!"; while ( defined( $f = readdir( D ) ) ) { $ff = $dir . '/' . $f; next if $f =~ /^\.{1,3}$/; if ( -d $ff ) { push @res, recursiveRead( $ff ); } else { push @res, $ff; } } closedir D; return @res; } print recursiveRead( "c:/inetpub/wwwroot" );