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 '' )"
>perl -le"print( 123 eq '123' )"
>perl -le"$r=\$s; print( $r eq sprintf('SCALAR(0x%x)', 0+$r) )"
>perl -le"print( qr/a/ eq '(?-xism:a)' )"
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.