- 论坛徽章:
- 0
|
首先声明一下,关于目录的遍历,我使用的是qiguojie提供的遍历脚本,并进行了一些修改。
以下是脚本:
#!/usr/bin/perl -w
use strict;
#定义保存搜到目录的数组
my @alldir = ();
#编写一个函数,输入一个路径,搜索这个路径下面的所有文件和目录,并把符合条件的目录保存到alldir数组中
sub pdir
{
#获取参数
my ($enter) = @_;
#打开目录,如果打开失败,退出函数
opendir (TEMP,$enter)||die return -1;
#依次取得文件或目录名过滤,不要包含*.*格式的目录或文件,保存合法的到tempdir数组中
my @tempdir = grep(!/.*\..*/i,readdir TEMP);
#获得此时tempdir的数组元素个数
my $arraysize = @tempdir;
if ($arraysize != 0)
{
#循环遍历每个数组元素
for (my $i=0;$i<$arraysize;$i++)
{
#组合成合法的目录元素
$tempdir[$i] = "$enter/$tempdir[$i]";
opendir DH, $tempdir[$i] or die "Cannot open $tempdir[$i]: $!";
foreach my $file (readdir DH) {
print "one file in $tempdir[$i] is $file\n";
open FILEHANDLER,"+<$tempdir[$i]/$file";
my @file_content;
while(<FILEHANDLER>){
s/\/\*.*\n//;
s/\s*\*.*\n//;
s/(.*?)\/\*.*?\*\//$1/;
push @file_content,$_;
}
close FILEHANDLER;
open FILEHANDLER,">$tempdir[$i]/$file";
foreach(@file_content){
print FILEHANDLER;
}
close FILEHANDLER;
}
closedir DH;
}
#将tempdir压入堆栈数组alldir
push (@alldir,@tempdir);
closedir TEMP;
return 0;
}
}
print "--------ReadDir----------\n";
#调用函数pdir,获得第一个目录下面的所有符合条件的目录,并保存到alldir中
pdir("D:/Perl/perl-exec/test/");
my $n = @alldir;
#遍历alldir,依次获取alldir中每个元素目录下面的目录,再将结果保存到alldir中
for (my $j=0;$j<$n;$j++)
{
pdir($alldir[$j]);
#重置循环种子,使循环可以循环到数组的结尾,遍历所有元素
$n = @alldir;
}
将红色部分换成你的目录就行 |
|