{ package TEST_CLASS; my $private_class_var; our $public_class_var; my $private_method = sub { my ($self,@args)=@_; print "-- private_method(@args)\n"; }; sub public_method { my ($self,@args)=@_; print "- public_method(@args)\n"; $self->$private_method(7..9); } sub new { my ($class,%args)=@_; bless \%args, $class; return \%args; } } my $obj = TEST_CLASS->new(a=>1,b=>2); $obj->public_method(1..3); $obj->private_method(4..6); #### - public_method(1 2 3) -- private_method(7 8 9) Can't locate object method "private_method" via package "TEST_CLASS" at /tmp/tst_pkg.pl line 32.