如何在不将Perl强制转换为相同类型的情况下比较Perl中的两个对象?

Pav*_*vel 4 perl

在Perl中,我知道的三种方法来测试对象是否相等:==,eq,和~~.所有这些告诉我1等于"1"Perl 5中.

然而,1"1"不一样的东西.我怎样才能比较两个对象,这样1等于1,"1"等于"1",1不等于"1"2"1"不等于"01"?Perls的答案将不胜感激.

ike*_*ami 11

别.在Perl中,一个一个.基于值类型的多态性必然会失败.这就是为什么Perl有两个比较运算符,这就是为什么~~被打破[1].

例如,返回的标量!0包含三个值,一个存储为整数,一个存储为浮点数,另一个存储为字符串.

例如,类的一个对象package Foo; use overload '0+' => sub { 1 }, fallback => 1;可能不包含一个可言,但它被认为是一个以数字和字符串上下文.


  1. 这就是为什么它仍然被标记为实验性的原因.