On Jan 28, 2008 6:56 AM, Mimi Cafe <mimicafe@[EMAIL PROTECTED]
> wrote:
> 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?
I would suggest trying to use a CPAN module for this type of thing.
There may be others, but look at File::Find:
http://search.cpan.org/search%3fmodule=File::Find
>
> ###############################################################
> #!/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("Do***ents list");
> print "<h1> Do***ents 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, @[EMAIL PROTECTED]
$file_full_path);
> $path = ****ft;
> opendir (SUBDIR, $path) or die "Cannot open the subfolder for reading:
> $!\n";
>
> @[EMAIL PROTECTED]
= sort grep {!/^\.{1,2}$/} readdir(SUBDIR);
> closedir (SUBDIR);
>
> for (@[EMAIL PROTECTED]
){
> $file_full_path = "$path/$_";
>
> if (-d $_){
> print qq(<b>$_</b><br />);
> process($_);
>
>
> }else {
>
> print qq(<a href="$file_full_path">$_</a><br />);
>
> }
>
> }
>
>
> }
> #######################################################
>


|