Что делает "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). Если вы соберете все это вместе, это будет краткий способ проверки того, что данный файл не пустой.

Другие вопросы по тегам