Andreas Z.: 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 = ¶m('formularfeld');

cu,
Peter

Danke!

Das ist zwar eine Lösung, die ich zu allerletzt einsetzen werde (ich programmier' meinen Sch... am liebsten selbst ;-), aber so wie es aussieht, muß ich die dann wohl doch nehmen.

Ich hatte schon ein Unterprogramm geschrieben, das das Gleiche macht:
(Zurvor habe ich die Parameter in die Arrays @Bezeichnung und @Wert eingelesen)

sub request()

»»  {

for($i=0;$i<=@Bezeichnung;$i++)
   {
    if($Bezeichnung[$i] eq $_[0])
     {
      return $Wert[$i];
     }
   }

»»  }

Aber vielen Dank trotzdem!

CU
AZ

Nochmal ich!

Ich versuch's halt mit Hashs, weil ich keine Funktion benutzen möchte (am Anfang hatte ich ja eben die o.g. Funktion benutzt, wird aber unübersichtlich und langsam).

CU
AZ