Chapter 43. Autoloading Perl Code
Randy J. Ray
Would you prefer to load a library of 10, 20, or more routines all at once, or only as needed? Perl provides a procedure called autoloading that specifies what happens when a program encounters a subroutine that is not currently defined. You do this using two modules: AutoLoader and AutoSplit.
Why Autoload?
I first took an interest in the AutoLoader when converting a lot of legacy code from Perl 4 to 5. One of the libraries that particularly frustrated me was a front end to some RCS utilities. The overhead was too high; in a library of 40–50 subroutines, I rarely needed more than two-thirds in a given execution, and sometimes just a few. Not only did I want to avoid the penalty of loading and parsing the whole library, I wanted to keep the unneeded routines from being loaded in the first place.
One of the ways in which use differs from require is that it loads (that is, reads and compiles) the module at compile time, before Perl runs the script. In Perl 4, which doesn’t have use, I deferred loading the RCS library as long as possible by performing other tasks first, such as validating command-line usage, and so on. But as I upgraded, I realized that to take advantage of Perl 5, I needed to turn libraries into modules, and design my modules around the tools that Perl provides. As a result, I turned to the AutoLoader and AutoSplit libraries.
I’ll use a smaller example for this article, a module I maintain called Image::Size (available on CPAN). ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access