Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

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 => 'smtp.smi.com', Timeout => 30, Debug => 1, ); #End Mail Settings $smtp->mail('humanresource@smi.com'); $smtp->to($username); $smtp->data(); $smtp->datasend("To: $username\n"); $smtp->datasend("From: humanresource\@foobar.com\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
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 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 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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2014-11-28 17:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (199 votes), past polls