> my $return = do_wrap('hello'); Doesn't this have to be MyCommon::do_wrap('hello'); ?
When running it, the error: Undefined subroutine &main::do_wrap thanks, -rkl > [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 > > ----------------------------------------- eMail solutions by http://www.swanmail.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]