When multiple people work on a project, or if you're slightly schizophrenic, you can carve up the variable namespace using packages. A package is just a hidden prefix put in front of most variables (except variables created with the
my
operator). By changing the prefix, you get different variables. Here's a brief example:

So, any name with an explicit package name is used as-is, but all other names get packaged into the current default package. Packages are local to the current file or block, and you always start out in package
main
at the top of a file. For details, the
perlsub
(1) manpage will help here.