Re: non-determinate program execution in perl
From: Nelson Castillo (nelsoneci_at_gmail.com)
Date: 08/31/05
- Previous message: Jon Dowland: "Re: non-determinate program execution in perl"
- In reply to: Donald Perkovich: "non-determinate program execution in perl"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Wed, 31 Aug 2005 16:06:38 -0500 To: Donald Perkovich <donp@mindspring.com>
On 8/30/05, Donald Perkovich <donp@mindspring.com> wrote:
>
> I have a perl program that runs every hour that scans a POP3 maildrop.
> About once every other day the program fails and I get this error:
>
> Can't call method "user" on an undefined value at
> /home/user/bin/fetch-headers.pl line 40.
>
> It appears to me that the hash isn't being properly initialized.
> Here is the code that initializes the hash. None of these values
> are changed in the program once they are set.
>
> my %pop = (
> server => 'pop.example.org <http://pop.example.org>',
> port => 110,
> user => 'someuser@example.org',
> pass => 'asswordpay',
> dir => '/home/user/mail'
> );
>
> Here is Line 40.
>
> $server->user($pop{user}) || die;
>
This code works just fine:
-------------------
#!/usr/bin/perl -w
use strict;
my %pop = (
server => 'pop.example.org <http://pop.example.org>',
port => 110,
user => 'someuser@example.org',
pass => 'asswordpay',
dir => '/home/user/mail'
);
print $pop{user} || die;
-------------------
I use Perl often but I'm no expert. So I guess:
> (1) Is there a better way to initialize the hash?
No.
> (2) Could this be a fault in Perl itself?
I don't think so.
> (3) Is it something else entirely?
Maybe the connection to the POP3 server fails once in a while
and "$server" is "undefined" and it's not pointing to the
object you think it's pointing to. Try to check the status of the
POP3 connection before issuing a call to "$server->user".
In general, you should always check for exceptions after
trying to establish a network connection.
Hope it helps,
Nelson.-
-- Homepage : http://geocities.com/arhuaco The first principle is that you must not fool yourself and you are the easiest person to fool. -- Richard Feynman. -- To UNSUBSCRIBE, email to debian-user-REQUEST@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
- Previous message: Jon Dowland: "Re: non-determinate program execution in perl"
- In reply to: Donald Perkovich: "non-determinate program execution in perl"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|