package Example::Tuple; use overload( 'eq' => \&isEqual, ); # ... sub isEqual { my( $self, $arg, $isReversed )= @_; # We ignore $isReversed since ($x eq $y) is also ($y eq $x) return 0 # Tuples of different sizes are never equal if @$self != @$arg; for my $i ( 0 .. $#$self ) { return 0 # Tuples differ if any paired elements differ if $self->[$i] ne $arg->[$i]; } return 1; # Otherwise they are equal. }