 <p>There's no such thing as internal/private methods in perl objects. Common practise is to start any methods which should not be used publicly with an underscore, but this is not enforced in any way. Also have a look at moose - it takes a lot of the hassle out of OO perl.</p> <p>With regards to your question the below shows how one module method can call another module method, with both having access to the object data. Again I woulds really recommend you use Moose!</p> <pre><code>sub publicSub{ my ( $self ) = @_; return $self-&gt;_privateSub(); } sub _privateSub{ my ( $self ) = @_; return $self-&gt;{name}; } </code></pre>