Hi Mimi, I could think of a replacement of "ls -R" command of unix in windows. It's "dir /S".
Recursive function call is a one way to do the same. You can try File::Find as well: http://search.cpan.org/~lbrocard/perl5.005_04/lib/File/Find.pm Thanks, Ajay -----Original Message----- From: Mimi Cafe [mailto:[EMAIL PROTECTED] Sent: Monday, January 28, 2008 5:25 PM To: beginners@perl.org Subject: Process Directory and subdirectories Recursively Hi, I am trying to process a directory and all subdirectory recursively and generate a list as the Unix command "ls -R" will display, but this seems not to behave as it should. My script only goes as far as processing the directory and the 1 step below not more. I have some like, but the script goes as far as 1_child and 2_child but no further: /parent/1_child/1_grant_child/././ /parent/2_child/2_grant_child/././ The script will finally be used on Windows OS, Unix system command cannot be used. Can anyone help? Regards Mimi ############################################################### #!/usr/bin/perl -w # Recursively read content of a folder and dynamically create a list on an html page. use CGI qw(:standard); #use CGI::Carp qw(warningsToBrowser fatalsToBrowser); #use warnings; use strict; print header(), start_html("Documents list"); print "<h1> Documents List</h1><br>\n"; my $source = "/depot/my_directory"; opendir (SOURCE, $source) or die "Cannot open the source folder for reading: $!\n"; my $file; while (defined($file = readdir(SOURCE))){ next if $file =~ /^\.{1,2}$/; my $full_name = "$source/$file"; if (-d $full_name){ #my $full_name = "$source/$file"; print qq(<b>$file</b><br>); process($full_name); }else{ print qq(<a href="$full_name>$file</a><br>); } #next; } closedir (SOURCE); print end_html(); # Subroutine to process subdirectory and list content. sub process{ my ($path, $file, @files, $file_full_path); $path = shift; opendir (SUBDIR, $path) or die "Cannot open the subfolder for reading: $!\n"; @files = sort grep {!/^\.{1,2}$/} readdir(SUBDIR); closedir (SUBDIR); for (@files){ $file_full_path = "$path/$_"; if (-d $_){ print qq(<b>$_</b><br />); process($_); }else { print qq(<a href="$file_full_path">$_</a><br />); } } } ####################################################### -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/