For example, let's make a simple Person class module. It gets stored in the file Person.pm. If it were called a Happy::Person class, it would be stored in the file Happy/Person.pm, and its package would become Happy::Person instead of just Person. (On a personal computer not running Unix or Plan 9, but something like MacOS or VMS, the directory separator may be different, but the principle is the same.) Do not assume any formal relationship between modules based on their directory names. This is merely a grouping convenience, and has no effect on inheritance, variable accessibility, or anything else.
For this module we aren't going to use Exporter, because we're a
well-behaved class module that doesn't export anything at all. In order to
manufacture objects, a class needs to have a constructor
method.
A constructor gives you back not just a regular data
type, but a brand-new object in that class. This magic is taken care of by
the bless
function, whose sole purpose is to enable its
referent to be used as an object. Remember: being an object really means
nothing more than that methods may now be called against it.
While a constructor may be named anything you'd like, most Perl programmers
seem to like to call theirs new.
However, new
is
not a reserved word, and a class is under no obligation to supply such.
Some programmers have also been known to use a function with the same name
as the class as the constructor.