Peter Squentz: Hashs mit Werten belegen

Beitrag lesen

bisher habe ich immer versucht Hashs zu umgehen, weil ich damit nicht zurecht gekommen bin. Jetzt aber muß ich wohl oder übel diese Form von Variablen einsetzen, da mein Script sonst zu umständlich werden würde. Das Problem:

Hashs sind ziemlich praktisch und koennen einen das Leben viel leichter machen. Es gibt keinen Grund sie nicht einzusetzen.

Wie kann ich die Parameter, die dem Script übergeben werden, in ein Hash einlesen? So habe ich es zuletzt versucht:

if($ENV{'REQUEST_METHOD'} eq 'GET')
    {
     $Daten = $ENV{'QUERY_STRING'}
    }
   else
    {
     read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
    }
   @Formularfelder = split(/&/, $Daten);
   foreach $Feld (@Formularfelder)  
    {
     ($name, $value) = split(/=/, $Feld);  
     $value =~ tr/+/ /;
     $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
     $value =~ s/<!--(.\n)*-->//g;      
     %Wert+=$name;
     %Wert+=$value;
    }

Das solltest Du allerdings so nicht machen. Es gibt ein Modul CGI.pm, das einem die Funktion param zur Formularfeld-Auswertung zur Verfügung stellt. Es gibt auch hier keinen Grund, weshalb diese Funktion nicht einsetzten sollte.

use CGI qw(:standard);
my $formularfeld = &param('formularfeld');

cu,
Peter