Perl 中 Scalar::Util::looks_like_number 的行为 [英] Behavior of Scalar::Util::looks_like_number in Perl

查看:82
本文介绍了Perl 中 Scalar::Util::looks_like_number 的行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找出输入是数字还是字符串.我遇到了 looks_like_number 并且无法理解它返回的值.

I am trying to find out if an input is number or string. I came across looks_like_number and cannot understand the values it returns.

use warnings;
use Scalar::Util qw(looks_like_number);

my $name = 11;
print looks_like_number ($name);

如果 $name 包含一个字符串和一个静态数字,如果 $name 包含一个整数(即每个整数为 4352),则此代码打印 1).

This code prints 1 if $name contains a string and a static number if $name contains an integer (i.e. 4352 for each integer).

我在 Windows 上使用 Perl.

I am using Perl on Windows.

推荐答案

这就是 文档 说:

looks_like_number EXPR

looks_like_number EXPR

如果 perl 认为 EXPR 是一个数字,则返回 true.参见looks_like_number"在perlapi.

Returns true if perl thinks EXPR is a number. See "looks_like_number" in perlapi.

此引文中的 perlapi 链接 不幸的是并没有真正帮助我们很多:

The link to perlapi in this quote is not really helping us a lot unfortunately:

测试一个 SV 的内容是否看起来像一个数字(或者是一个数字).信息和 Infinity 被视为数字(因此不会发出非数字警告),即使您的 atof() 没有理解它们.Get-magic 被忽略.

Test if the content of an SV looks like a number (or is a number). Inf and Infinity are treated as numbers (so will not issue a non-numeric warning), even if your atof() doesn't grok them. Get-magic is ignored.

I32   looks_like_number(SV *const sv)

就我而言,您的代码将返回一个不是 0 的整数,这是正确的.

In my case, your code will return an integer that is not 0, which is true.

  • 我在使用 11 时得到了 4352.
  • 当我使用 '11' 时,我得到了 1.
  • I got 4352 when I used 11.
  • When I used '11' I got 1.

所有这些都是正确的,所以行得通.

All of these are true, so that works.

  • 当我输入 'test''foobar' 时,我得到了 0,这不是真的.
  • 对于任何看起来不像数字的东西,我从来没有得到过 1.
  • 我尝试了 '1e1' 并且它打印了 4,这是一个真实的值,并且输入看起来像一个科学记数法中的数字.
  • When I put 'test' or 'foobar' I got 0, which is not true.
  • I never got a 1 for anything that did not look like a number.
  • I tried '1e1' and it printed 4, which is a true value, and the input looked like a number in scientific notation.

所以,如果 Perl 认为输入看起来像一个数字,我会说它总是返回真值,尽管我不知道那个真值到底代表什么.我无法确认它是否也返回带有名称的 true.

So, I'd say it always returns something true if Perl thinks the input looks like a number, though I do not know what exactly that true value represents. I cannot confirm that it also returns true with a name.

这篇关于Perl 中 Scalar::Util::looks_like_number 的行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆