BEGIN { *old_import = \&import if defined &import; } sub import { _init(@ISA); goto &old_import if defined &old_import; } sub _init { foreach(@_) { _init(@{$_."::ISA"}) if exists ${$_.'::'}{ISA}; *{$_."::define_attributes"} = \&define_attributes unless defined &{$_.'::define_attributes'}; } }