On Jan 28, 2008 6:56 AM, Mimi Cafe <[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("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/


Reply via email to