在perl

时间:2016-08-12 16:09:17

标签: linux perl

linux上的readdir系统调用返回一个dirent结构,其中包含更多信息,只包含文件名,但似乎perl的readdir只返回名称(我试过分配它)到变量并在其上使用Data::Dumper::dumper来查看它是否只是字符串化的文件名 - 我不知道这是否是一种可用的方法,但这是我能想到的最好的方法) 。有没有办法获得其他信息(特别是我需要d_type),而没有stat这个名字?

1 个答案:

答案 0 :(得分:2)

您可以使用IO::Dirent

use strict;
use warnings 'all';
use 5.010;

use IO::Dirent qw(:ALL); # import constants DT_REG, DT_LNK, etc.

my %types = (
    DT_REG() => 'regular file',
    DT_LNK() => 'symbolic link',
    DT_DIR() => 'directory'
);

my $dir = 'foo';
opendir my $dh, $dir or die "Failed to opendir '$dir': $!";

while (my $entry = nextdirent($dh)) {
    say join "\t", $entry->{name}, $types{ $entry->{type} };
}

输出:

..      directory
baz     symbolic link
.       directory
bar     regular file