[EMAIL PROTECTED] wrote:
> How can I reuse a subroutine?
>
> My environment is redhat 9, apache2, perl-5.8.0-88, mod_perl-1.99_07-5.
> I've tried to put the sub in a separate file and call it from another as
> below. Please modify the snipet below to make it work.
>
> mycommon.pl
> -----------
> #!/usr/bin/perl
> #return a value wrapped by single quotes
> #should this be declare package something?
Okay, I am going to come back around to this, because it's actually been
crawling under my skin for a few days now.
You see, I did some functional modules before I started using package
statements, and they worked just fine. The subs defined there could be
addressed very simply by their name. I've al;so done quite a bit of much
more careful OO work using the package statement. Turns out that I had
never really tried anything between, like functional modules within
packages.
You can do it without the package statement, and a post I sent a few days
ago, but deeper in the thread hierarchy, showed a version that worked.
Thast still left something lacking, and I couldn't see what I was missing.
After quite a bit of bumbling around through old scripts, I noticed the
crucial line that was missing. In this case, it was:
our @ISA = 'Exporter';
which is what brings the import function into the namespace of the package.
So here is what I've come up with as a sort of bare minimum for using
functional packages without having to prepend each function call with a
package name:
in MyCommon.pm:
package MyCommon;
use strict;
use warnings;
use Exporter;
our @ISA = 'Exporter';
our @EXPORT = qw(do_wrap);
sub do_wrap {
my $retval;
if(length($_[0]) == 0) {
$retval = "null";
} else {
$retval = "'" . $_[0] . "'";
}
return $retval;
}
1;
In test_my_common.pl:
#!perl
use strict;
use warnings;
use MyCommon;
my $return = do_wrap('hello');
print "$return\n";
Greetings! E:\d_drive\perlStuff>test_my_common.pl
'hello'
Greetings! E:\d_drive\perlStuff>
Joseph
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]