Что делает "if (! ((- s<filename / filepath>) && (некоторое условие))) " в perl?.
Привет, я новичок в Perl. Я наткнулся на это утверждение и прочитал некоторые ответы в Stackru, в которых говорилось, что он проверяет ненулевой размер файла. Просьба объяснить.
2 ответа
Объяснение охватывает -s
оператор, не более того. Возвращает размер файла; если он пуст, числовой ноль интерпретируется как ложный в логическом контексте, в то время как любое ненулевое число истинно.
print "has contents" if -s "/path/to/file";
!
это отрицание, и &&
логично "а"; таким образом, все выражение имеет значение true, если файл пуст или другое условие ложно, или оба. (Помните законы де Моргана;! (X &y) эквивалентно ! X |! Y.)
-s
возвращает размер файла. Нули в perl рассматриваются как ложные (аналогично c). Если вы соберете все это вместе, это будет краткий способ проверки того, что данный файл не пустой.