什么是;如果(!(-s<;filename/filepath>;)&;(某些条件))”;用perl做什么?。

什么是;如果(!(-s<;filename/filepath>;)&;(某些条件))”;用perl做什么?。,perl,scripting,perlscript,c,Perl,Scripting,Perlscript,C,嗨,我是perl的初学者。我在Stackoverflow中看到了这句话,并阅读了其中的一些答案,其中说它检查非零文件大小。请解释一下 -s返回文件的大小。perl中的零被视为false(类似于like)。如果你把这些放在一起,这是一种检查给定文件是否为空的速记方法。解释只涉及-s操作符,没有其他内容。它返回文件的大小;如果为空,则数字零在布尔上下文中解释为false,而任何非零数都为true print "has contents" if -s "/path/to/file"; 是一个否定,而

嗨,我是perl的初学者。我在Stackoverflow中看到了这句话,并阅读了其中的一些答案,其中说它检查非零文件大小。请解释一下

-s
返回文件的大小。perl中的零被视为false(类似于like)。如果你把这些放在一起,这是一种检查给定文件是否为空的速记方法。

解释只涉及
-s
操作符,没有其他内容。它返回文件的大小;如果为空,则数字零在布尔上下文中解释为false,而任何非零数都为true

print "has contents" if -s "/path/to/file";
是一个否定,而
&&
是逻辑上的“and”;因此,当文件为空或其他条件为false,或两者都为空时,整个表达式为true。(记住德摩根定律;!(x&y)相当于!x |!y)

-s还将在文件不存在(或是断开的链接)的情况下返回false(特别是unde)