在Perl脚本中使用`-d`有什么用? [重复]

问题描述 投票:0回答:4

这个问题在这里已有答案:

以下代码中的-d是什么:

foreach my $filename (@files) {
        my $filepath = $dir.$filename;
        next if -d $filepath;
        function1();
}
perl
4个回答
3
投票

这是一个简短的表格

if (-d $filepath) {
    next;
}

如果-d $filepath是一个目录,那么$filepath就是一个测试。

有关文件测试的完整列表,请参阅http://perldoc.perl.org/functions/-X.html


4
投票

-d测试$filepath是否是目录。

所有这些文件测试都记录在perldoc -X

  • -X FILEHANDLE
  • -X EXPR
  • -X DIRHANDLE
  • -X 文件测试,其中X是下面列出的字母之一。这个一元运算符接受一个参数,可以是文件名,文件句柄或dirhandle,并测试相关文件以查看是否有关于它的事情。如果省略该参数,则测试$_-t除外,它测试STDIN。除非另有说明,否则返回1为true,''为false。如果文件不存在或无法检查,则返回undef并设置$!(errno)。尽管有趣的名称,优先级与任何其他命名的一元运算符相同。运营商可以是以下任何一个: ... -f File is a plain file. -d File is a directory. ...

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.

1
投票

本质上,next if -d $filepath;的意思是“如果这个文件是一个目录,则运行循环的下一次迭代”,这有效地跳过了该文件的function1调用。简而言之,它是一种仅将function1应用于非目录文件的方法。

© www.soinside.com 2019 - 2024. All rights reserved.