首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免“in numeric in numeric eq (==)"-warning的最佳方法

避免“in numeric in numeric eq (==)"-warning的最佳方法
EN

Stack Overflow用户
提问于 2010-11-09 16:28:57
回答 4查看 35.3K关注 0票数 11
代码语言:javascript
复制
#!/usr/bin/env perl
use warnings;
use 5.12.2;

my $c = 'f'; # could be a number too

if ( $c eq 'd' || $c == 9 ) {
    say "Hello, world!";
} 

最好的方法是避免‘参数’f‘在./perl.pl第7行的numeric eq (==)中不是数字。’-警告?

我想在这种情况下,我可以使用"eq“两次,但这看起来不太好。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-09 16:38:21

代码语言:javascript
复制
use Scalar::Util 'looks_like_number';    

if ( $c eq 'd' || ( looks_like_number($c) && $c == 9 ) ) {
    say "Hello, world!";
} 

您还可以暂时禁用此类别的警告:

代码语言:javascript
复制
{
    no warnings 'numeric';
    # your code
}
票数 26
EN

Stack Overflow用户

发布于 2010-11-09 16:40:26

不确定为什么要避免警告。该警告告诉您程序中存在潜在问题。

如果你打算将一个数字与一个包含未知数据的字符串进行比较,那么你要么使用'eq‘进行比较,要么以某种方式清理数据,这样你就会知道它看起来像一个数字。

票数 18
EN

Stack Overflow用户

发布于 2010-11-09 16:32:22

避免比较非数值型与数值型的警告的明显方法是不要这样做!警告是为了你的利益--它们不应该被忽视,或者被解决。

要回答你需要提供更多上下文的最佳方式是什么--即$c代表什么,为什么有必要将其与'd'9进行比较(为什么不使用$c eq '9')?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4131701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档