From perldoc perltoot (about a quarter way through the document):
Perl doesn’t impose restrictions on who gets to use which methods. The
public-versus-private distinction is by convention, not syntax. (Well,
unless you use the Alias module described below in “Data Members as
Variables”.) Occasionally you’ll see method names beginning or ending with
an underscore or two. This marking is a convention indicating that the
methods are private to that class alone and sometimes to its closest
acquaintances, its immediate subclasses. But this distinction is
not enforced by Perl itself. It’s up to the programmer to behave.
Therefore, I recommend you put an underscore or two at the beginning of your “private” methods to help dissuade usage.