perl 如何遍历指定路径下的不同文件夹下的指定扩展名文件并读取内容

 我来答
xdruid
2011-10-27 · 超过31用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:83.5万
展开全部
给你一个比较复杂点的例子。。。。
opendir (DIR,"X:\\")||die"$!";
chdir("X:\\");
@dirs=grep{/^\.\.?$/}readdir DIR;
foreach $dir(@dirs){
opendir (DIR2,$dir)||die"$!";
@files=grep{/indd$/}readdir DIR2;
close DIR2;
}
close DIR;

当然还有更多的方法,可以用glob,LS所说的File::Find等等。。。。。
cjian19900813
2011-10-28
知道答主
回答量:46
采纳率:0%
帮助的人:7.5万
展开全部
Perl codeuse strict; use threads; use threads::shared; use File::Find; my $exit_flag :shared; my $job_thread = threads->create(\&job); while (1) { print '>>> '; chomp(my $cmd = <>); # 当用户输入exit命令时,设置退出标记,并等待job线程结束。 if ($cmd =~ 'exit') { $exit_flag = 1; $job_thread->join(); last; } } sub job { until ($exit_flag) { # 如果设置了退出标记,则终止循环。 # 维护一个最近20个文件的列表。每找到一个新文件,将其加入该列表, # 并按照最后访问时间重新排序,将排名20位之后的文件删除。 my @latest_files; find( sub { push @latest_files, [ $File::Find::name, -M $File::Find::name ]; if (@latest_files > 20) { sort { $a->[1] <=> $b->[1] } @latest_files; unlink map { $_->[0] } @latest_files[20..$#latest_files]; } }, '/ccd/pa/' ); # 删除所有大于5M的文件。 find( sub { if (-s $File::Find::name > 5000000) { unlink $File::Find::name; } }, '/ccd/pb/'; } } }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
计名pS
2011-10-27 · TA获得超过3649个赞
知道大有可为答主
回答量:4189
采纳率:0%
帮助的人:2178万
展开全部
use File::Find ;
更多追问追答
追问
能不能具体点啊?比如说在X盘下,有多个文件夹,我要读取这些文件加下面的后缀是indd文件内容
追答
CPAN
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-28
展开全部
opendir and open
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式