perl 遍历目录

上一篇 / 下一篇  2011-05-13 10:29:26 / 个人分类:Script Language


递归遍历某个目录,我的方法如下:
通过此程序,可以得到某个目录下除了.与..之外的所有文件的路径 罗列在标准输出(屏幕),若想输出到文件,只需将输出重定向即可。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#! /usr/bin/perl -w
                                                                                          
print "please enter your directory:";
                                                                                          
$dir=<STDIN>;
                                                                                          
chomp ($dir);
                                                                                        
&find_dir($dir);
                                                                                          
sub find_dir()
{
        my $base_dir=$_[0];
        if(!opendir(DIR,"$base_dir"))
        {
                warn "open dir failed:$!\n";
        }
        my @father_dir=readdir(DIR);
        closedir(DIR);
                                                                                          
        $base_dir =~ s/\/$//;
        for $sub_dir (@father_dir)
        {
                if($sub_dir =~ /^\./)
                {
                        next;
                }
                                                                                          
                print "$base_dir/$sub_dir","\n";
                                                                                          
                if(-d "$base_dir/$sub_dir")
                {
                        &find_dir("$base_dir/$sub_dir");
                }
        }
}
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

重定向到file:
#! /usr/bin/perl -w
                                                                                          
print "please enter your directory:";
                                                                                          
$dir=<STDIN>;
                                                                                          
chomp ($dir);

if(!open OUTPUT,">file")
{
         die " Open file failed:$!";
}
                                                                                        
&find_dir($dir);
                                                                                          
sub find_dir()
{
        my $base_dir=$_[0];
        if(!opendir(DIR,"$base_dir"))
        {
                warn "open dir failed:$!\n";
        }
        my @father_dir=readdir(DIR);
        closedir(DIR);
                                                                                          
        $base_dir =~ s/\/$//;
        for $sub_dir (@father_dir)
        {
                if($sub_dir =~ /^\./)
                {
                        next;
                }
                                                                                          
                print OUTPUT "$base_dir/$sub_dir","\n";
                                                                                          
                if(-d "$base_dir/$sub_dir")
                {
                        &find_dir("$base_dir/$sub_dir");
                }
        }
}

close OUTPUT;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TAG:

 

评分:0

我来说两句

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 5454
  • 日志数: 7
  • 建立时间: 2010-11-21
  • 更新时间: 2011-05-16

RSS订阅

Open Toolbar