#!/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!";
}
避免出现“Argument "f" isn't numeric in numeric eq (==) at ./perl.pl line 7.”警告的最佳方法是什么?
我想在这种情况下我可以使用“eq”两次,但这看起来不太好。
use Scalar::Util 'looks_like_number';
if ( $c eq 'd' || ( looks_like_number($c) && $c == 9 ) ) {
say "Hello, world!";
}
您也可以暂时禁用此类警告:
{
no warnings 'numeric';
# your code
}
如果您要将数字与包含未知数据的字符串进行比较,那么您要么必须使用“eq”进行比较,要么以某种方式清理数据,以便您知道它看起来像数量。
不这样做! 警告是为了您的利益而存在的 - 它们不应被忽视或解决。
要回答什么是最好方式,您需要提供更多上下文 - 即$c
代表什么,以及为什么有必要比较它
'd'
或
9
(以及为什么不使用
$c eq '9'
) ?
if(($num=~/\d/) && ($num >= 0) && ($num < 10))
{
# to do thing number
}
if ( $c eq 'd' || $c eq '9' ) {
我需要知道...
if ( "08:30:22" > 10 ) {
我用过
if ( unpack('a2',$time) > 10 ) {
或者你可以将字符转换为ascii...
if ( ord($c) == 100 or orc($c) == 59 ) {