我试图使用正则表达式区分readdir是否返回文件或文件夹。
这是我的代码:
opendir($dh, $_[0]) || die "Can't open folder!";
while(($filename = readdir($dh))){
if ($filename =~ /..*\...*/) {...}}
这个正则表达式的想法是它需要在点之前和之后至少有一个字符。我在perl在线正则表达式测试器中测试了这个表达式(没有" /"在开头和结尾)并且它起作用,但是实际上条件总是返回false。
我做错了什么?感谢
答案 0 :(得分:4)
除非您的文件遵循特殊约定,否则只能通过查看名称来区分文件和文件夹。您可以使用-d
检查路径是否为文件夹(请参阅here)。
my $root = $_[0];
opendir($dh, $root) || die "Can't open folder!";
while(($filename = readdir($dh)))
{
next if $filename =~ /^\.{1,2}$/; # skip . and ..
if (-d "$root/$filename")
{
# $filename is a folder
}
else
{
# $filename is something else (regular file, symlink, ...)
}
}