sub _private_sub { die "_private_sub is private!" unless caller eq __PACKAGE__; # private stuff # } #### package Foo; sub bar : public { ... } package Bar; use base 'Foo'; sub bar : private { ... } package Baz; use base 'Bar'; #### Baz->new->bar;