http://qs321.pair.com?node_id=781461


in reply to What is the best way to compare variables so that different types are non-equal?

For what other pairings of data types does eq ignore type?

eq pays no attention to the type whatsoever. eq stringifies its operands and compares those strings.

>perl -le"print( undef eq '' )" 1 >perl -le"print( 123 eq '123' )" 1 >perl -le"$r=\$s; print( $r eq sprintf('SCALAR(0x%x)', 0+$r) )" 1 >perl -le"print( qr/a/ eq '(?-xism:a)' )" 1 etc

I know there is a way to overload operators but I was under the impression that one had to "use overload" to empower it

You use use overload to add overloading to a class, not to decide whether or not overloading will occur.

Regex pattern objects are magical. Overloading doesn't even come into play.