my $obj = bless {}, 'Bar'; $obj->violation; package Bar; use Class::Can; CHECK { ## See what UNIVERSAL can do.. my %uni_can = Class::Can->interrogate('UNIVERSAL'); ## These are ok.. delete $uni_can{$_} foreach qw( can isa VERSION ); ## Anything left is not ok.. my @bad_methods = keys %uni_can; foreach my $method ( @bad_methods ) { *{ __PACKAGE__ . "::$method" } = sub { die "UNIVERSAL::$method not allowed"; }; } } package UNIVERSAL; sub violation { print "haha, a violation\n"; }