Packages
Packages[†] allow you to compartmentalize namespaces. Imagine that you have
10 programmers all working on one big project. If you use the global
names $fred, @barney, %betty, and &wilma in your part of the project, what
happens when I accidentally use one of those same names in my part?
Packages let us keep them separate; I can access your $fred, and you can access mine, but not by
accident. Packages are needed to make Perl scalable so that we can
manage large programs. Packages are covered in great detail in the
Alpaca.
[†] The name “package” is perhaps an unfortunate choice, in that
it makes many people think of a packaged-up chunk of code (in Perl,
that’s a module or a library). All that a package does is define a
namespace (a collection of global symbol names, like $fred or &wilma). A namespace is
not a chunk of code.