ich habe in Perl, wenn ich mit strict arbeite, immer wieder mal das Problem, dass ich Fehlermeldungen wie die folgenden bekomme, ohne dass ich mir zu helfen weiss:
Use of uninitialized value in numeric gt (>:wink: at confirm105.pl line 118
Use of uninitialized value in numeric gt (>:wink: at confirm105.pl line 632
Use of uninitialized value in numeric lt (
my $popholen;
if( $popholen = Net:OP3->new($host) )
{
my $nom = $popholen->login($user,$pw);
Falls irgendeine Mail vorhanden
if($nom > 0) # Line 118, $nom ist Anzahl der Mails
{
…
my $zeitdiff = 1;
sub AZeit
{
if($zeitdiff \> 0) # Line 632
{ return (time() + (60\*60\*$zeitdiff)); }
elsif($zeitdiff
Weiss von Euch jemand, woran das liegt?
Chris
login ( [USER [, PASS]] )
Returns the number of messages in the mailbox. However if there are no messages on the server the string „0E0“ will be returned. This is will give a true value in a boolean context, but zero in a numeric context.
Aber wahrscheinlich habe ich ein Problem mit dem „0E0“ wenn die Box leer ist.
list ( [MSGNUM] )
If called with an argument the list returns the size of the message in octets.
If called without arguments a reference to a hash is returned. The keys will be the MSGNUM’s of all undeleted messages and the values will be their size in octets.
Die Anzahl liefert es scheinbar nicht zurueck, man kann sie hoechstens davon ableiten.
Trotzdem danke. Ich werde damit mal herumexperimentieren.
das Problem scheint mir eher zu sein, dass die Rueckgabe „0E0“
nicht numerisch ist aber die Rueckgabe der Anzahl eben
numerisch ist.
„0E0“ ist in Perl genauso numerisch wie „1“ oder 1. „Numerisch“ oder nicht ist keine Frage der Daten, sondern der Operation. Wenn die Operation eine Zahl erwartet, werden die Daten zu einer Zahl konvertiert. Und das geht bei „0E0“ wunderbar.
„unitialized“ heisst, dass ein Wert undef war. Nicht „0E0“.