sub initialize { return shift->call_super_before(\@_, sub { my($self) = @_; $self->die($self->get('values'), undef, 'number of elements must be even') unless @{$self->get('values')} % 2 == 0; return; }); } #### my($_BAR) = 1; sub foo { return shift->call_super_before(\@_, sub { die('gone') unless $_BAR; return; }); } #### package T1; sub s1 {print("T1:s1\n")} package T2; use base T1; package T3; use base T2; sub s1 {shift->SUPER::s1} package main; no strict 'refs'; exists($T2::{s1}) && die('not here'); T3->s1; exists($T2::{s1}) && die('here');