Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Undefined subroutine

by Trihedralguy (Pilgrim)
on Feb 20, 2008 at 19:32 UTC ( #669081=perlquestion: print w/ replies, xml ) Need Help??
Trihedralguy has asked for the wisdom of the Perl Monks concerning the following question:

I'm having problem debugging something that is wrong with my perl program. So I came to the Monastery to get a couple of extra sets of eyes.

The error I'm getting is: Undefined subroutine &ModPerl::ROOT::ModPerl::Registry::home_trihedralguy_htdocs_smi_employment_app_register_2ecgi::send_email

Can anyone see what I'm doing wrong? The Code Snippet from the calling script:
use lib '/home/thertzel/htdocs/smi/employment/app/'; #Current Director +y use EmailSender; #The name of the module send_email($username, $body); #we need to send it our username and the + preformed message.
the PM File:
package EmailSender; use Net::SMTP; use strict; sub send_email { my $username = shift; my $body = shift; my $smtp; #Define Scalar for Net::SMTP #Mail Settings $smtp = Net::SMTP->new( Host => '', Timeout => 30, Debug => 1, ); #End Mail Settings $smtp->mail(''); $smtp->to($username); $smtp->data(); $smtp->datasend("To: $username\n"); $smtp->datasend("From: humanresource\\n"); $smtp->datasend("Subject: Smi Employment Application\n"); $smtp->datasend("Content-Type: text/plain; charset=\"iso-8859-1\"\n"); $smtp->datasend(qq^ $body ^); my $errormsg = $smtp->status(); $smtp->dataend(); $smtp->quit; #return $errormsg; } 1;

Comment on Undefined subroutine
Select or Download Code
Replies are listed 'Best First'.
Re: Undefined subroutine
by friedo (Prior) on Feb 20, 2008 at 19:38 UTC
    The problem is that send_email is not exported to the namespace of your calling script, so the subroutine is undefined. Two solutions: Use the fully-qualified name to call the sub, e.g. EmailSender::send_email( $username, $body ); or use Exporter to export the symbol to the calling namespace:
    package EmailSender; use base 'Exporter'; our @EXPORT_OK = ( 'send_email' ); ... 1;
    And then in your calling script:
    use EmailSender 'send_email';
Re: Undefined subroutine
by ikegami (Pope) on Feb 20, 2008 at 19:37 UTC
    Your PM file doesn't export send_email. Commonly, this is done with the use of Exporter. Alternatively, use EmailSender::send_email(...).
Re: Undefined subroutine
by Trihedralguy (Pilgrim) on Feb 20, 2008 at 21:58 UTC
    Ah! Yes thank you!! I had written down that need to do that, but forgot and ended up getting frustrated at nothing.
    Thanks again for your assistance!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://669081]
Approved by ikegami
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (8)
As of 2016-02-08 22:25 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (286 votes), past polls