[EMAIL PROTECTED] wrote:

> I guess, you're the man!
>
> Your code works. I did not know of the Exporter.
>
> What happens if there are several package with the same name and exported?
>
> thanks,
> rkl

Then you have to prepend the name.  For some reason the term is slipping my
mind, but a sub declared in an immediate scope will hide a similarly named sub
imported from another package.  Methods of the same name imported from more than
one package will compete with each other.  This should cause a compiler error.
I'll see if I have time to test it before I head off to the day job.

Nope.  The last definition read overshadows any previous one.  I modified the
code in MyCommon::do_wrap() to eliminate the single quotes around the return
value, and re-saved the file as MyCommon2.pm, then included both in the
test_my_common.pl.  When MyCommon2 was use'd after MyCommon, the string printed
without quotes, when I reversed the order of inclusion, the single quotes were
back.  The compiler gave no warning or error, just took the most recent
definition.

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;

MyCommon2.pm:
package MyCommon2;

use strict;
use warnings;

use Exporter;

our @ISA = 'Exporter';
our @EXPORT = qw(do_wrap);

sub do_wrap {
    my $retval;

    if(length($_[0]) == 0) {
      $retval = "zero-length";
    } else {
      $retval = $_[0];
    }
    return $retval;
}

1;

test_my_common.pl:
#!perl

use strict;
use warnings;

use MyCommon2;
use MyCommon;

my $return = do_wrap('hello');
print "$return\n";
$return = MyCommon2::do_wrap('hello');
print "$return\n";

Command Line testing:
Greetings! E:\d_drive\perlStuff>test_my_common.pl
'hello'
hello

Greetings! E:\d_drive\perlStuff>

Joseph


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to