use Data::Dumper; use strict; use warnings; use overload '>>' => \&singed_shift; #use overload 'main::>>' => \&singed_shift; #print Dumper(\%OVERLOAD); print -4 >> 2; sub signed_shift { use integer; return $_[0] >> $_[1]; }