[Perl]读取当前目录下的所有文件,包括子目录下的文件

直接上代码,所有文件存在 my @files中

不怕文件夹中带空格, glob会有此问题用!


my $basedir = '.';
my $d;
my @files = ();
my @dirs = ($basedir);
die "error $basedir: $!" unless(-d $basedir);    
while(@dirs){
   $d = $dirs[0];
   $d .= "/" unless($d=~/\/$/);

   opendir folder, $d || die "Can not open this directory";
   my @filelist = readdir folder; 
   closedir folder;
   my $f;
   foreach (@filelist) {
      print $_."\n";
      $f = $d.$_;

      #need to remove . and ..
      if($_ eq "." || $_ eq "..")
      {
          #print "ignore"."\n";
          next;
      }

      push(@dirs, $f) if(-d $f) ;
      push(@files,$f)if(-f $f);
    }
   shift @dirs;
}

你可能感兴趣的:([Perl]读取当前目录下的所有文件,包括子目录下的文件)