三 实例
@EXPORT contains list of symbols (subroutines and variables) of the module to be exported into the caller namespace.
@EXPORT_OK does export of symbols on demand basis.
Let us use the following sample program to understand Perl exporter.
package Arithmetic;
use Exporter;
# base class of this(Arithmetic) module
@ISA = qw(Exporter);
# Exporting the add and subtract routine
@EXPORT = qw(add subtract);
# Exporting the multiply and divide routine on demand basis.
@EXPORT_OK = qw(multiply divide);
sub add
{
my ($no1,$no2) = @_;
my $result;
$result = $no1+$no2;
return $result;
}
sub subtract
{
my ($no1,$no2) = @_;
my $result;
$result = $no1-$no2;
return $result;
}
sub multiply
{
my ($no1,$no2) = @_;
my $result;
$result = $no1*$no2;
return $result;
}
sub divide
{
my ($no1,$no2) = @_;
my $result;
$result = $no1/$no2;
return $result;
}
In the above example, we defined the arithmetic module with four functions. By default add() and subtract() functions are exported to the user’s/caller’s namespace.
“use Arithmetic” statement imports the subroutines from Arithmetic module that are exported by default.
“use Arithmetic qw(multiply divide)” indicates that these two routines gets exported only when it is specifically requested as shown in the following code snippet.
#! /usr/bin/perl
use strict;
use warnings;
use Arithmetic;
use Arithmetic qw(multiply divide);
print add(1,2),"\n";
print multiply(1,2),"\n";
As we seen above, in the main program we used the Arithmetic module with default import ( add and subtract ) and on-demand import ( multiply and divide ).
http://www.thegeekstuff.com/2010/06/perl-exporter-examples/
完!