|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
求教各位大侠~我想读取目录下所有文件(包括子目下的),可是filter2子程序运行不出来,貌似是无法读取DHW目录,还请大侠帮忙看看是哪里写错了?多谢~
$getdata="D:\\Cp report\\FM309";
$tmp=$getdata;
chomp($tmp);
$localorremote="\\"; #用"\\" 代替"\",因为构成字符串时"\"为元字符,需要转义使用
$tmp="$tmp$localorremote"; #链接构成子目录名"\abc\cde"
opendir DH,$tmp; #把目录名按照文件方式打开
@dirs=readdir DH; #读入目录文件所有内容(文件名列表)?
closedir DH;
foreach(@dirs)
{#遍历文件名
next if $_ eq "." or $_ eq ".."; #检查文件名是否为. 或者..,该二者分别代表上级目录和当前目录,不是真实文件名,跳过
if (-d $tmp."\\".$_)
{#使用perl的类shell功能属性,-d检查文件名是否为目录,-e检查文件名是否为文件,文件名由上级目录名遍历到的当前文件名构成
$folder=$_;#若为子目录名,则进行下一级搜索
@subdirs=glob $tmp."\\".$folder; #glob 是一个文件操作符,提供一个类似文件查找的功能,支持通配符规则,这里搜索子目录下的所有文件列表
foreach(@subdirs)
{
$tmp= $_;
&filter2($tmp);
}
}
}
sub filter2{
$localorremote="\\"; #用"\\" 代替"\",因为构成字符串时"\"为元字符,需要转义使用
$tmp="$tmp$localorremote"; #链接构成子目录名"\abc\cde"
opendir DHW,$tmp; #把目录名按照文件方式打开
@dirw=readdir DHW; #读入目录文件所有内容(文件名列表)?
print @dirw;
closedir DHW;
} |
|