脚本的主体是来源于网络,不记得在哪了
- 实现是基于子程序的递归;
- 输入的值要有*,例如代码中所示;
- 结果是文件夹及其子文件夹中所有文件的地址;
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;
遇到的疑难点:
这里结果数组的声明是在子程序外,因为子程序是递归的,所以在内部声明的变量不能累积。
因此用于收集文件地址的变量一定要是子程序外声明的全局变量。