in reply to (x == 3 && x != 3)

I don't know about operator overloading, but it seems that $x->of(2) indeed returns 3 (as your print test shows). I suggest that you tell us how you've overloaded the == operator. Also, I'd step through the Perl debugger and find out exactly what is happening inside that last conditional.

Cheers,
Erik