in reply to Re^3: I hate the leading underscores.
in thread I hate the leading underscores.

Just to give a slight hint at how you can use closures to hide methods:
#!/usr/bin/perl -w use strict; package Foo; { # private my $set_a = sub { my $self = shift; $self->{a} = shift; }; # public sub a { my $self = shift; return $self->{a}; } # public sub new { my $self = bless {},shift; $self->$set_a('abcdef'); return $self; } } package main; my $foo = Foo->new; print $foo->a();
It is a pretty secure and not too hard way to hide private methods, but I've never used it in production code, because I happen to agree with the philosophy that undocumented methods are private. It does have the advantage of not polluting namespaces with private methods, though.