Skip to Content
Intermediate Perl, 2nd Edition
book

Intermediate Perl, 2nd Edition

by Randal L. Schwartz, brian d foy, Tom Phoenix
July 2012
Intermediate to advanced
396 pages
9h 16m
English
O'Reilly Media, Inc.
Content preview from Intermediate Perl, 2nd Edition

Chapter 17. Exporter

In Chapter 2, we showed how to use modules, some of which pulled functions into the current namespace. Now we’re going to show how to get our own modules to do that.

What use Is Doing

So, what does use do? How does the import list come into action? Perl interprets the use list as a particular form of BEGIN block wrapped around a require and a method call. The following two operations are equivalent:

use Island::Plotting::Maps qw( load_map scale_map draw_map );

BEGIN {
  require Island::Plotting::Maps;
  Island::Plotting::Maps>import( qw( load_map scale_map draw_map ) );
}

First, the require is a package-name require, rather than the string-expression require from Chapter 11. The colons are turned into the native directory separator (such as / for Unix-like systems), and the name is suffixed with .pm (for “perl module”). On a Unix-like system, we end up with:

require "Island/Plotting/Maps.pm";

Note

We can’t use the .pl (for “perl library”) extension that we used earlier since use won’t find it. It only uses the .pm extension.

Recalling the operation of require from earlier, this means Perl looks in the current value of @INC, checks each directory in turn for a subdirectory named Island that contains a subdirectory named Plotting that contains the file named Maps.pm

If Perl doesn’t find an appropriate file after looking at all of @INC, the program dies (which we can trap with an eval). Otherwise, Perl reads and evaluates the first file it finds. As always with require, the ...

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.
Start your free trial

You might also like

Mastering Perl, 2nd Edition

Mastering Perl, 2nd Edition

brian d foy
Perl & LWP

Perl & LWP

Sean M. Burke
Advanced Perl Programming

Advanced Perl Programming

Sriram Srinivasan

Publisher Resources

ISBN: 9781449343781Errata Page