是什么&#34; if(!(( - s <filename filepath =“”>)&amp;&amp;(某些条件)))&#34;在perl吗?

时间:2016-09-11 16:30:59

标签: perl scripting perlscript

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

2 个答案:

答案 0 :(得分:2)

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

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

!是否定的,&&是合乎逻辑的“和”;因此,当文件为空或其他条件为false或两者都是时,整个表达式为true。 (记住de Morgan的定律; !(x&amp; y)相当于!x |!y 。)

答案 1 :(得分:0)

-s返回文件的大小。 perl中的零被视为falses(类似于)。如果将所有这些放在一起,则是检查给定文件不为空的简便方法。