Perl 101: Things Every Perl Programmer Should Know.

Objects, Modules and Packages

Package basics

  • A package is a collection of methods
  • Lives in its own namespace
  • Package methods can be exported or called directly
    • Foo::bar()
    • Foo->bar()
    • bar() (if Foo exports it)

Module basics

  • A module is a file containing one or more packages
  • Most people use "module" and "package" interchangably

Object basics

  • An object is a blessed reference to a hash
    • It doesn't have to be a hash reference, but it's most common.
  • Blessing assigns a single class to an object
  • An object can be re-blessed
  • You can muck with the internals, but that doesn't mean you should


  • Modules must end with a true value
  • It doesn't have to be 1
  • Packages don't have the same restriction


Perl's object inheritance methods use @ISA to determine what classes a module inherits from. Years ago, inheritance was declared by modifying @ISA directly; now, most programs use the base pragma to declare inheritance.

The following are mostly equivalent:

    package Foo;
    require Wango;
    @ISA = ( "Wango" );

    package Foo;
    use base "Wango";

Want to contribute?

Submit a PR to

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.