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.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Perl Pocket Reference, 5th Edition

Perl Pocket Reference, 5th Edition

Johan Vromans
Beginning Perl

Beginning Perl

Curtis Ovid Poe
Advanced Perl Programming

Advanced Perl Programming

Sriram Srinivasan
Perl & LWP

Perl & LWP

Sean M. Burke

Publisher Resources

ISBN: 9781449343781Errata Page