perl - "0 but true"在 Perl 中意味着什么?

标签 perl integer boolean

有人能解释一下 Perl 中字符串“0 but true”的确切含义吗?据我了解,它在整数比较中等于零,但在用作 boolean 值时计算结果为 true。它是否正确?这是语言的正常行为还是解释器中将其视为特殊情况的特殊字符串?

最佳答案

这是语言的正常行为。引用 perlsyn联机帮助页:

The number 0, the strings '0' and "", the empty list (), and undef are all false in a boolean context. All other values are true. Negation of a true value by ! or not returns a special false value. When evaluated as a string it is treated as "", but as a number, it is treated as 0.

因此,需要有一种方法可以从希望返回 0 作为(成功)返回值的系统调用中返回 0,并留下一个通过实际返回错误值来表示失败情况的方法。 “0 but true” 就是为了这个目的。

关于perl - "0 but true"在 Perl 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5318011/

相关文章:

linux - Perl:Linux 源代码中的 checkstack.pl 是做什么的?

regex - 如何将所有 #include "...\..."中的反斜杠替换为正斜杠

perl - 如何使用 Perl 每月轮换日志文件?

java - 如何将字符串转为整数并相加?

arrays - 是否有 O(n) 算法为正整数数组生成无前缀数组?

使用 filter_var 的 PHP 验证 boolean 值

perl - 如何在普通程序代码中使用 perl 调试器漂亮地打印散列?

java - 使用递归来确定位数

c# - 编写适当的正则表达式以允许数字和字母和数字的组合混合

java - 如何对相同的表达式进行不同的评估?