【问题标题】:what does " if (!((-s<filename/filepath>) && (some condition))) " in perl do?.perl 中的“ if (!((-s<filename/filepath>) && (some condition))) 是做什么的?
【发布时间】:2017-01-19 04:18:59
【问题描述】:

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

【问题讨论】:

    标签: perl scripting perlscript


    【解决方案1】:

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

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

    ! 是一个否定,&amp;&amp; 是逻辑“与”;因此,当文件为空或其他条件为假或两者兼而有之时,整个表达式为真。 (记住德摩根定律;!(x&y) 等价于 !x | !y。)

    【讨论】:

    • -s 如果文件不存在(或链接断开)也会返回 false(特别是 undef)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-04
      • 1970-01-01
      • 2013-11-18
      • 2011-09-27
      • 2015-08-30
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      相关资源
      最近更新 更多