'if-konstrukt' ... steh aufm schlauch

17/09/2007 - 10:09 von Oliver Beck | Report spam
Halloechen,

ich habe in einer CGI eine if-Condition, die pruefen soll, ob ein
<input>-feld ausgefuellt wurde. Wenn dies nicht der Fall ist, soll es
mit einer "0" gefuellt werden. ($q = new CGI;)
So sieht es aus:


if ($q->param('vamp') == "")
{
my $vamp = 0
}
else
{
my $vamp = $q->param('vamp')
}


Allerdings erhalte ich dann die Fehlermeldung
'Global symbol "$vamp" requires explicit package name at [...]'

Die Form ist auch mit einen Wert (einer Zahl) gefuellt. Auch wenn sie es
nicht ist, bekomme ich den Fehler.

Wenn ich hingegen ohne die Condition arbeite und ein simples


my $vamp = $q->param('vamp');


schreibe, klappt es ...

Habe ich da irgendwo einen Schusselfehler?

Danke!


PS.: Falls es von Interesse ist:
This is perl, v5.8.4 built for i386-linux-thread-multi
Debian 3.1 (sarge)
 

Lesen sie die antworten

#1 Bjoern Hoehrmann
17/09/2007 - 10:22 | Warnen spam
* Oliver Beck wrote in de.comp.lang.perl.cgi:
So sieht es aus:


if ($q->param('vamp') == "")



Hier solltest du wahrscheinlich `eq` statt `==` benutzen, vergleiche
`perldoc perlop`.

{
my $vamp = 0
}
else
{
my $vamp = $q->param('vamp')
}



Du musst $vamp erst deklarieren und dann einen Wert zuweisen, also

my $vamp;
if (...) { $vamp = ... }
else { $vamp = ... }

Eine mit `my` deklarierte Variable existiert nur in dem Block in dem
sie deklariert wurde (siehe `perldoc -f my`).
Björn Höhrmann · mailto: · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/

Ähnliche fragen