Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7345982
  • 博文数量: 1763
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16217
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1763)

文章存档

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2011-11-13 20:42:00

如果你想用Perl读取一个目录下的所有文件名,你应该怎么办呢?一般来讲,我喜欢用两种方法。

第一种方法,直接用readdir来读取目录句柄。

use warnings;
use strict;

my $dir = “./test”;
my $file;
my @dir;

opendir (DIR, $dir) or die “can’t open the directory!”;
@dir = readdir DIR;
foreach $file (@dir) {
if ( $file =~ /[a-z]*\.zip/) {
print $file;
} else {
print “Not the kind of file type you want!\n”;
}
}

这段代码的含义就是:打开一个目录,读取所有的文件名,如果该文件名是以字母开头、并以.zip为后缀结尾的,则输出文件名称;否则,就输出提示消息。

当然,这段代码只会读取当前目录下的内容,并不会递归地寻找子目录下的内容。

第二种方法,直接用外部命令find

在Unix Shell或是Cygwin里,有命令find可以直接读出目录下的文件名,而我们只要在Perl脚本里调用这个命令就可以了。

use warnings;
use strict;

my $dir = “./test”;
my @file;
my $filename;

@file = `find $dir -type f`;

foreach $filename (@file) {
print $filename;
}

上面的代码就直接调用外部命令find来进行查找与读取。这个时候,查找的结果,完全由你所调用的外部命令所控制。

两个方法都比较方便,第一种的移植性更强,推荐使用。

转:http://blog.waterlin.org/articles/using-perl-to-read-filename-under-a-directory.html

阅读(1392) | 评论(0) | 转发(0) |
0

上一篇:python-nmap

下一篇:gitblit WEB版的GIT管理工具

给主人留下些什么吧!~~