hotti: use strict: Fehler mit "my $in{$name}"

Beitrag lesen

Hier noch der Scriptcode:
$in{$name} = $value; # Wie hier "my" platzieren?

Abgesehen von (wahrscheinlich) Tippfehlern, hat der Code den entscheidenden Mangel, dass im Fall von mehreren name-Attributen nur ein Wert geliefert wird (name-Attribut als key im Hash). Wenn Du also mehrere Formfelder mit gleichem Namen hast oder multiple-Selects, gehen Dir damit diese Werte verloren.

Das Perlmodul CGI.pm gibts schon lange. Daran ist nichts zu verbessern, param() ist ein Parser, der überdies auch mit mutlipart/form-data klarkommt (File-Upload) und auch ein Array liefert, wenn es mehrere Attribute mit gleichem Namen gibt. use CGI; # und alles wird gut, strict und warnings nicht vergessen.

Neuere Versionen von CGI.pm (ab v3.28) können außerdem UTF-8-kodierte Eingaben gleich taggen, so dass damit Stringfunktionen wie substr(), uc() usw. möglich werden und wenn Dein CGI mit einer DB komplett utf8 reden soll, musst Du das sowieso machen.

Hotti

PS: Falls Du die OO-Api nicht brauchst,

  
use CGI 'param';  
if(param('name')){} # usw.  

--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.