PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl - Script verarbeitet Schleife nicht



Christian Korff
23-04-2003, 09:48
Hallo Leute. Ich bin am Verzweifeln. Ich habe mittels Net::SMTP, Mail::POP3Client und DBI ein kleines Script geschrieben um E-Mails auszuwerten.
Wie bereits aus obigem hervorgeht benutze ich für das Abrufen der Mails das CPAN-Modul Mail::POP3Client.

# ...
# hier sezt der problematiche Code ein
$pop3c1 = new Mail::POP3Client( USER=>"username",
PASSWORD => "password",
HOST => "192.168.1.14",
PORT => 110,
DEBUG => 0,
USESSL => 0) or die("1: ".$!);
# bis hierhin schlägt nichts fehl
$pop3c1->Connect or die("2: ".$!);

for ($c1 = 1; $c1 <= $pop3c1->Count(); $c1++) {
print "SCHLEIFE\n";
# ....
}
# ....

Die for-Schleife wird nie ausgeführt. Ohne die "or die"-Anweisungen führt Perl das Programm ohne jegliche Fehlermeldungen und Warnungen aus. (Auch mit den Paramenter -w -T)
Wenn ich allerdings die "or die"-Anweisung benutze schlägt das Script fehl bei $pop3c1->Connect mit folgender Fehlermeldung:
Operation now in progress at ./script.pl line 28.

Was bedeutet diese Fehlermeldung oder was will mir Perl damit sagen?

micha
23-04-2003, 11:30
Hi,

ich kenne mich in Perl nicht sonderlich aus, aber Connect müsste eine Funktion sein, oder ?
Dann fehlen da zumindest die Klammern:



$pop3c1->Connect() or die("2: ".$!);


Gruß micha

micha
23-04-2003, 11:47
Hab gerade mal das Perlmodul installiert und Dein Script getestet.
So funktionierts:



#!/usr/bin/perl

use strict;
use Mail::POP3Client;

my $pop3c1 = new Mail::POP3Client (
HOST => "host",
USER => "user",
PASSWORD => "password",
PORT => 110,
DEBUG => 0,
USESSL => 0) or die ("1: ".$ !);

$pop3c1->Connect() or die ("2: ".$ !);

for (my $c1 = 1; $c1 <= $pop3c1->Count (); $c1++)
{
print "SCHLEIFE\n";
}


Gruß micha