On 6/6/07, jeevs <[EMAIL PROTECTED]> wrote:
#!c:/perl/bin/perl.exe
#Calculator.pm

package calc;

use strict;
use warnings;
use Exporter;

our @ISA = qw(Exporter);
our @EXPORT = qw(add);

sub add
{
        my ($num1,$num2) = @_;
    $num1+$num2;
}

1;

>>>>>>>>>>>>>>>>>>>

#!c:/perl/bin/perl.exe
#adcalculator.pl

use strict;
use warnings;
use Calculator;

my $addn = add(1,9);
print $addn;

>>>>>>>>>>>>>>

it says
undefined subroutine &main::add called at adcalculator,pl line 8.


Where am I going wrong???

Your sin was these two lines:

#Calculator.pm
package calc;

You stuffed the package calc into a file named "Calculator.pm". When you say

   use Calculator;

you do

   BEGIN {
        require Calculator; # which loads Calculator.pm
        Calculator->import; # if the Calculator package has an import sub
   }

The &add sub is exported by the calc package, which inherited the
import from Exporter to get these exporting abilities. But this import
was never called.

     require Calculator;
     calc->import;

would work. But what you probably want is to use

     package Calculator; # in your Calculator.pm file

Cheers,
Adriano Ferreira

P.S. As a stylistical note, usually you provide exporting capabilities
to a module via Exporter with code like that:

      require Exporter; # no need to use
      our @ISA qw(Exporter);

or

       use base qw(Exporter);


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to