佩尔。检查标量的值是否为零数

标签 perl

我需要检查标量的值是否为 0。但是“0”和其他情况对我的检查来说是错误的。我该如何检查?

最佳答案

您可以使用

检查标量的值是否为零
$scalar == 0

你真的不应该,但你可以使用以下方法检查标量是否包含值为零的 IV(有符号整数)、UV(无符号整数)或 NV( float ):

use Inline C => <<'__END_OF_C__';

   IV contains_numerical_zero(SV* sv) {
      SvGETMAGIC(sv);

      if (SvIOKp(sv))  /* If the SV contains an IV or UV */
         return SvIV(sv) == 0;

      if (SvNOKp(sv))  /* If the SV contains an NV */
         return SvNV(sv) == 0;

      return 0;
   }

__END_OF_C__

say contains_numerical_zero(...) ? "yes" : "no";

请注意,如果标量包含等于零的有符号整数和包含字符零的字符串,则 contains_numerical_zero 返回 true。

关于佩尔。检查标量的值是否为零数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954295/

相关文章:

perl - 无需正则表达式的简单搜索和替换

perl - WWW::Mechanize::PhantomJS 无法获取 HTTPS 页面

windows - 当我尝试在 Windows 上运行 Perl 单行程序时,为什么我得到 "Can' t find string terminator "'“EOF 之前的任何位置 -e 第 1 行”?

perl - 如果 Moose 中未提供必需的属性,如何获得更好的错误消息?

perl - 在 Perl 中,当我从文件(如 fgets)中读取行时,我可以限制行的长度吗?

perl - autodie-pragma 对编码有影响吗?

regex - 多次匹配的命名捕获(Perl)

perl - Apache2 从 CGI 内部重新加载配置

perl - rsh 与 Perl 的 Expect.pm 相比有何优势?

java - Perl、Inline_Java、Java动态加载对象和方法