Defining a Module’s Interface
Problem
You want the standard Exporter module to define the external interface to your module.
Solution
In module file YourModule.pm, place the following code. Fill in the ellipses as explained in the Discussion section.
package YourModule;
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
use Exporter;
$VERSION = 1.00; # Or higher
@ISA = qw(Exporter);
@EXPORT = qw(...); # Symbols to autoexport (:DEFAULT tag)
@EXPORT_OK = qw(...); # Symbols to export on request
%EXPORT_TAGS = ( # Define names for sets of symbols
TAG1 => [...],
TAG2 => [...],
...
);
########################
# your code goes here
########################
1; # this should be your last lineIn other files where you want to use YourModule, choose one of these lines:
use YourModule; # Import default symbols into my package. use YourModule qw(...); # Import listed symbols into my package. use YourModule (); # Do not import any symbols use YourModule qw(:TAG1); # Import whole tag set
Discussion
The standard Exporter module handles the module’s external
interface. Although you could define your own
import method for your package, almost no one does
this.
When someone says use
YourModule, this does a require
"YourModule.pm" statement followed a
YourModule->import() method call, both during
compile time. The import method inherited from the Exporter package looks for global variables in your package to govern its behavior. Because they must be package globals, we’ve declared them ...
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