以下代码中的-d
是什么:
foreach my $filename (@files) {
my $filepath = $dir.$filename;
next if -d $filepath;
function1();
}
答案 0 :(得分:4)
-d
测试$filepath
是否为目录。
所有此类文件测试都记录在perldoc -X
:
-X FILEHANDLE
-X EXPR
-X DIRHANDLE
-X
文件测试,其中X是下面列出的字母之一。这个一元运算符接受一个参数,可以是文件名,文件句柄或dirhandle,并测试相关文件以查看是否有关于它的内容。如果省略该参数,则测试
$_
,但-t
除外,它测试STDIN。除非另有说明,否则返回1
表示true,''
表示false。如果文件不存在或无法检查,则返回undef
并设置$!
(错误)。尽管有趣的名称,优先级与任何其他命名的一元运算符相同。运营商可以是以下任何一个:... -f File is a plain file. -d File is a directory. ...
答案 1 :(得分:3)
这是
的简短形式if (-d $filepath) {
next;
}
如果-d $filepath
是目录,则$filepath
是测试。
有关文件测试的完整列表,请参阅http://perldoc.perl.org/functions/-X.html。
答案 2 :(得分:2)
它检查目录......
检查
的简短示例$somedir = "c:/windows";
if (-d $somedir) {
print "$somedir exists";
} else {
print "$somedir does not exist!";
}
另请查看docs其他此类案例
-f File is a plain file.
-d File is a directory.
-l File is a symbolic link.
-p File is a named pipe (FIFO), or Filehandle is a pipe.
-S File is a socket.
-b File is a block special file.
-c File is a character special file.
-t Filehandle is opened to a tty.
答案 3 :(得分:1)
基本上,next if -d $filepath;
表示“如果此文件是目录,则运行循环的下一次迭代”,这有效地会跳过对该文件的 function1 的调用。简而言之,这是一种仅将 function1 应用于非目录文件的方法。