It is strongly recommended. However, this leads immediately to the problem of how one package may access the facilities of another. The problem with this is that it risks the very namespace collisions that packages were designed to prevent. The Perl5 Fix Perl5 provides support for both reaching down and pushing up. One of the design objectives of Perl5 is to allow the language to scale.
Current implementations compile a program each time it is run.
This is acceptable for a 1000 line program, but could become a problem as programs scale up into the 10K-100K line range. The Autoloader module implements a scheme that compiles subroutines at run time, on demand. This can reduce both the CPU and memory requirements of a program. I've never used Autoloader , because I've never written a Perl program that was big enough for the compilation time or code size to matter. Since I don't use Autoloader , I delete this statement from the module source.