Nun gibt es folgendes Verhalten: Ist das Feld mit einer Zahl größer 0 gefüllt, gehts immer in dem if-Zweig - so soll es sein. Ist das Feld leer, gehst in den else-Zweig, auch ok. ABER ist das Feld mit einer 0 (Ziffer Null) gefüllt, gehts es auch in den else-Zweig!? Warum? Null ist eine gültige Zahl. Und eben nicht "nichts". Wie bekomme ich den Wert Null in meine Variable $sizelimit?
Dazu musst du Wissen, worauf ein if(...) oder while(...) prüft. Und zwar ob der Wert in der Klammer ungleich 0 ist, kein Leerstring oder ein definiertes Objekt.
In deinem Falle ist es 0 also falsch. du willst Wissen, ob der wert definiert ist, also:
if (defined $query->param('sizelimit')) {
$sizelimit=$query->param('sizelimit');
print "if: $sizelimit";
}else{
$sizelimit=20;
print "else: $sizelimit";
}
Struppi.