遍历文件夹

脚本的主体是来源于网络,不记得在哪了

  1. 实现是基于子程序的递归;
  2. 输入的值要有*,例如代码中所示;
  3. 结果是文件夹及其子文件夹中所有文件的地址;

my @ScanFileResult;
# 输出文件夹遍历结果
sub scan_file{
    my @result;
    my @files = glob($_[0]);
    foreach (@files){
        if(-d $_){
            my $path = "$_/*";
            scan_file($path);
        }elsif(-f $_){
            push @ScanFileResult,$_;
        }
    }
}

scan_file("/home/*");
print @ScanFileResult;

遇到的疑难点:
这里结果数组的声明是在子程序外,因为子程序是递归的,所以在内部声明的变量不能累积。
因此用于收集文件地址的变量一定要是子程序外声明的全局变量。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容