Thread Hilfe mit Formular Script: CGI - Perl ### Formular
(30 answers)
Opened by Strat at 2004-01-16 12:37
so auf auf die schnelle fallen mir mal folgende sachen auf:
1. schreibe anstelle von Code: (dl
)
1 if ($ENV{"REQUEST_METHODE"} eq "POST") besser: dann kannst du schon mal viele probleme und Abstuerze vermeiden (perl mag z.B. nicht hex('zz'), und wenn im wert eines parameters ein = vorkommen sollte, dann wuerde alles nach dem = verloren gehen... 2. du schreibst oefter Code: (dl
)
if ($FORM{'input07'} ne "" and ne "Musterweg 10") {print MAIL "$FORM{'input07'}\n\n"; } ne vergleicht immer zwei werte, also da besser schreiben: Code: (dl
)
1 if ($FORM{'input07'} ne "" and (ebenso in den folgezeilen 4. Code: (dl
)
&falsch(Fehler 02: Bitte eine gueltige eMail Adresse eingeben !) unless ($input13 =~ m/^[a-zA-Z0-9][-\_\.]*[a-zA-Z0-9]\@[a-zA-Z0-9][-\_\.]*[a-zA-Z0-9][\.]([a-zA-Z]){2,4}$/); Email-Adressen wie irgendwas.@irgendwas.de sind auch gueltig... zum Ueberpruefen einer Email-Adresse verwende ich gerne das Perl-Modul Mail::RFC822::Address 5. Zeile 75: [\.] ist fuer die katz; da reicht \. 6. eine gueltige Telefonnummer sieht folgendermaszen aus? Code: (dl
)
/^[0]\d+.\d+$/ also am anfang eine 0, danach eine oder mehrere Ziffern, danach ein beliebiges Zeichen (.), danach ein oder mehrere ziffern am ende? 7. wenn die Bedingung in if/unless recht lange ist, ist die Form normalerweise besser lesbar als Code: (dl
)
block if langeBedingung; 8. Zu Crian's Aussage wegen der Prototypen: eigene Subroutinen rufe ich immer mit &Subroutine(...) auf, weil ich nie Prototypen verwende (wofuer auch?), und weil es mir logischer erscheint, vor der Subroutine ein & zu haben (analog zu %hash, @array, $scalar, ...). Nur eingebaute Perl-Subroutinen (auch aus Modulen) sollte man besser nicht mit &Subroutine(...) aufrufen, weil sich da das mit den Prototypen auswirken koennte (aber sogar das wuerde bei tests schnell auffallen). und so kann man gut eigene Subs von fremden unterscheiden perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |