#!/usr/local/bin/perl use strict; use warnings; my $manager1 = Manager->new({ id => 1 }); my $manager2 = Manager->new({ id => 1 }); my $manager3 = Manager->new({ id => 3 }); compare( $manager1, $manager2 ); compare( $manager1, $manager3 ); sub compare { my ( $obj1, $obj2 ) = @_; if ($obj1 eq $obj2) { print "They are the same object\n"; }else { print "They are different objects\n"; } } package Manager; use overload 'eq' => sub { $_[0]->{id} == $_[1]->{id} } ; sub new { my ( $class, $args ) = @_; $args ||= {}; return bless $args, $class; }