How the EXPORT is useful in OO programming of perl
Please note as a general rule, if the module is trying to be object oriented (OO) as stated in the OP, then export nothing.
Check the example below:
package Student;
use warnings;
use strict;
sub new {
my $type = shift;
my $class = ref($type) || $type;
my $self = {
name => shift // "No name",
score => shift // 0,
};
return bless( $self, $class );
}
sub name {
my $self = shift;
$self->{'name'} = shift // $self->{'name'};
return $self->{'name'};
}
sub score {
my $self = shift;
$self->{'score'} = shift // $self->{'score'};
return $self->{'score'};
}
1;
Then that is called in the .pl script like so:, without the Exporting any subroutine
#!/usr/bin/perl -l
use warnings;
use strict;
use Student; # the module used
my $std = Student->new();
print join " - " => ( $std->name(), $std->score() ); # prints No name
+- 0
my $std2 = Student->new( "melchi", 78 );
print join " - " => ( $std2->name(), $std2->score() ); # prints melchi
+ - 78
print join " - " => ( $std->name("kunle"), $std2->score(90) ); # print
+s kunle - 90
You might what to check,
perlobj,
perlmod,
perlmodlib
Hope this helps.
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author
unknown to me