Что делает -d
в следующем фрагменте кода:Что такое `-d` в скрипте Perl?
foreach my $filename (@files) {
my $filepath = $dir.$filename;
next if -d $filepath;
function1();
}
Что делает -d
в следующем фрагменте кода:Что такое `-d` в скрипте Perl?
foreach my $filename (@files) {
my $filepath = $dir.$filename;
next if -d $filepath;
function1();
}
Это короткая форма для
if (-d $filepath) {
next;
}
Где -d $filepath
тест, если $filepath
является каталогом.
См. http://perldoc.perl.org/functions/-X.html для получения полного списка проверок файлов.
-d
тесты, если $filepath
является каталогом.
Все такие тесты файлов документированы в perldoc -X
:
-X FILEHANDLE
-X EXPR
-X DIRHANDLE
-X
тест-файл, где Х представляет собой один из букв перечислено ниже. Этот унарный оператор принимает один аргумент, либо имя файла, дескриптор файла, либо dirhandle, и проверяет связанный файл, чтобы убедиться, что с ним что-то истинно. Если аргумент опущен, тесты
$_
, за исключением-t
, который проверяет STDIN. Если не указано иное, он возвращает1
для true и''
для false. Если файл не существует или не может быть проверен, он возвращаетundef
и устанавливает$!
(errno). Несмотря на смешные имена, приоритет такой же, как и любой другой унарный оператор. Оператор может быть любой:... -f File is a plain file. -d File is a directory. ...
Он проверяет каталог ...
короткий пример, чтобы проверить, что
$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.
По существу, next if -d $filepath;
означает «если этот файл является каталогом, выполните следующую итерацию цикла», что фактически пропускает вызов function1 для этого файла. Короче говоря, это способ применения function1 только в файлы, которые НЕ являются каталогами.
Если вы установили 'perldoc', то наберите' perldoc -f function' покажет вам документацию для 'function', например. 'perldoc -f -d' переносит вас в документацию для [функций проверки файлов] (http://perldoc.perl.org/functions/-X.html). – ThisSuitIsBlackNot
'perldoc -f -d' – hobbs