Perl练习题:遍历所有目录
上一篇 / 下一篇 2008-12-16 15:26:39 / 个人分类:perl
b\O*S0sw1U3t0Perl练习题:遍历所有目录
z"E!f7^H9i&p|051Testing软件测试网gN }:N*j7F Hqiguojie原创文章,转载请注出处,谢谢!
-^Pt`I^y,u0%?)a;bv%]rN0自己写的练习程序,有几点不足:51Testing软件测试网#M)TE4u6O
1、正则表达式只是过滤了*.*格式的文件,但是无法对付没有扩展名的文件。51Testing软件测试网Q*A C
p})\-D5b s#D:o
2、无法对付目录名有“.”的目录
,Fm O3y
[^03、无法对付系统中限定访问权限的目录51Testing软件测试网a
_:U ]y'}lw
mTu%k S%o%U#w,u*wo\0程序主要实现功能:
&G,obW2~9@+o`c01、输入C\D\E\F,可以遍历这个盘符下面的所有目录51Testing软件测试网noC1uf(|
EU
2、结果输出到E盘根目录下面的perllog.log
(oy5ZT
I4Lc0#-------------------
5`2r7mn'YS{s0#Author:qiguojie
$]7V
`FJ5[%r8b0#Date:2008-12-16
-g$Ktxy6Fc
j0#-------------------
51Testing软件测试网.D"q6o`Gg"P
#!/usr/bin/perl -w51Testing软件测试网f ~
|Ft'T&E`
.Kh&[4lt v.M7y0use strict;51Testing软件测试网Cxi1R _;g&@X@
/GB&`B0[$^+gS0#定义保存搜到目录的数组51Testing软件测试网*HtE+X c a:Z-F
my @alldir = ();51Testing软件测试网fg\&R[$NP
#编写一个函数,输入一个路径,搜索这个路径下面的所有文件和目录,并把符合条件的目录保存到alldir数组中
?hA:L/u*]?\-_/QA0sub pdir
*Q1B8L+n2N5WE0{
| Z#bUx R:Du4dE0 #获取参数
:_$Gy{Z}3a0 my ($enter) = @_;51Testing软件测试网z)],n#rz(Oc-@{2C
printf ("Searching DIR:$enter...\n");
G ZHnN.s'F0 #打开目录,如果打开失败,退出函数51Testing软件测试网NqVLV5xkU{
opendir (TEMP,$enter)||die return -1;51Testing软件测试网ku,ic$m,Af
#依次取得文件或目录名过滤,不要包含*.*格式的目录或文件,保存合法的到tempdir数组中
fS'^W2V2I0 my @tempdir = grep(!/.*\..*/i,readdir TEMP);51Testing软件测试网,HT\"{$EE
#获得此时tempdir的数组元素个数51Testing软件测试网z/G
w1I6g;ac
my $arraysize = @tempdir;51Testing软件测试网Wq;[*J jk
if ($arraysize != 0)
2H[A%L_VcEh0 {51Testing软件测试网
q#BW%E!O&FJ
#循环遍历每个数组元素51Testing软件测试网7i+c]8JOL
for (my $i=0;$i<$arraysize;$i++)
"vz&aT3B0 {51Testing软件测试网h-YX N"YV;QBj5|
#组合成合法的目录元素
8e$h{+_ P,yA7Aj0 $tempdir[$i] = $enter."/".$tempdir[$i];
*i
jHZ5R$u8b!F"}*_0 }
;W;VX6X#PFn
K0 #将tempdir压入堆栈数组alldir
/|olQx.\n0 push (@alldir,@tempdir);51Testing软件测试网VE&V3S2v;I
closedir TEMP;51Testing软件测试网}k6j(N9I9S0Z;g
return 0;51Testing软件测试网X1Q#\4^ iX?"c
}51Testing软件测试网ld7y{-y)j"gf
}
print "--------ReadDir----------\n";51Testing软件测试网 @7A j(|/zI,G&_f8L
print "which Driver you want Read?C,D,E,F?Enter you choose:";51Testing软件测试网 MY
f4F-|}a?z}
my $which = <STDIN>;
6GG_yI!| t1F0chomp $which;51Testing软件测试网 nsAg7f
#连接字符串,得到格式如d:
bf*K'dT(x ef0my $t =$which.":";51Testing软件测试网e+lC1RgB3J
#调用函数pdir,获得第一个目录下面的所有符合条件的目录,并保存到alldir中