perl 中的“ if (!((-s<filename/filepath>) && (some condition))) ”是做什么的?

what does " if (!((-s<filename/filepath>) && (some condition))) " in perl do?.

大家好,我是 perl 的初学者。我遇到了这个声明并阅读了 Whosebug 中的一些答案,这些答案说它检查非零文件大小。请解释。

-s returns 一个文件的大小。 perl 中的零被视为假(类似于 )。如果将所有这些放在一起,这是一种 shorthand 检查给定文件是否为空的方法。

解释仅涵盖 -s 运算符,仅此而已。它 returns 文件的大小;如果它为空,则数字零在布尔上下文中被解释为假,而任何非零数字都为真。

print "has contents" if -s "/path/to/file";

!是否定,&&是逻辑"and";因此,当文件为空或另一个条件为假或两者均为假时,整个表达式为真。 (记住德摩根定律;!(x&y) 等价于 !x | !y。)