加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何读取Perl中的目录的内容?

发布时间:2020-12-15 21:23:29 所属栏目:大数据 来源:网络整理
导读:如何让Perl将给定目录的内容读入数组? Backticks可以做到,但有没有一些方法使用’scandir’或类似的术语? 解决方法 opendir(D,"/path/to/directory") || die "Can't open directory: $!n";while (my $f = readdir(D)) { print "$f = $fn";}closedir(D)
如何让Perl将给定目录的内容读入数组?

Backticks可以做到,但有没有一些方法使用’scandir’或类似的术语?

解决方法

opendir(D,"/path/to/directory") || die "Can't open directory: $!n";
while (my $f = readdir(D)) {
    print "$f = $fn";
}
closedir(D);

编辑:哦,对不起,错过了“进入数组”部分:

my $d = shift;

opendir(D,"$d") || die "Can't open directory $d: $!n";
my @list = readdir(D);
closedir(D);

foreach my $f (@list) {
    print "$f = $fn";
}

编辑2:大多数其他答案是有效的,但我想评论this answer具体,其中提供此解决方案:

opendir(DIR,$somedir) || die "Can't open directory $somedir: $!";
@dots = grep { (!/^./) && -f "$somedir/$_" } readdir(DIR);
closedir DIR;

首先,记录它做什么,因为海报没有:它传递返回的列表从readdir()通过一个grep()只返回那些值是文件(而不是目录,设备,命名管道等)和不开始一个点(这使得列表名称@dots误导,但这是由于他从readdir()文档复制时所做的更改)。因为它限制了它返回的目录的内容,我不认为它在技术上是一个正确的答案这个问题,但它说明了一个常用的成语用于过滤文件名在Perl,我认为这是有价值的文档。另一个看到很多的例子是:

@list = grep !/^..?$/,readdir(D);

此代码段从目录句柄D中读取除“。”之外的所有内容。和’..’,因为这些很少需要在列表中使用。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读