gpt4 book ai didi

perl - 关于相等运算符的警告

转载 作者:行者123 更新时间:2023-12-01 08:35:49 25 4
gpt4 key购买 nike

在 Perl 中是否发生了某些变化,或者一直都是这样,第二个 ($number eq 'a') 之类的示例不会引发警告?

#!/usr/bin/env perl
use warnings;
use 5.12.0;

my $string = 'l';
if ($string == 0) {};

my $number = 1;
if ($number eq 'a') {};


# Argument "l" isn't numeric in numeric eq (==) at ./perl.pl line 6.

最佳答案

Perl 将尝试将标量转换为使用它的上下文所需的类型。

从任何标量类型到字符串的转换都是有效的,所以这总是静默完成。

如果字符串通过 looks_like_number 测试(可通过 Scalar::Util 访问),则转换为数字也会静默完成。否则会发出警告,并且无论如何都会进行“最佳猜测”近似。

my $string = '9';
if ( $string == 9 ) { print "YES" };

将字符串静默转换为整数 9,测试成功并打印 YES

my $string = '9,8';
if ( $string == 9 ) { print "YES" };

引发警告Argument "9,8"is not numeric in numeric eq (==),将字符串转换为整数 9,测试成功并且 YES被打印出来了。

据我所知,至少从 v5.0 开始就是这样。

关于perl - 关于相等运算符的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10750399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com