Hash einem Array zuweisen
thales
- perl
0 Christian Kruse0 thales
0 Tobias0 klaus0 thales
Hallo Perl-Experten ...
Ich habe ein Problem mit einem eigentlich ganz einfachem CGI/Perl - Script: Ich habe mein Problem in dem unteren Script versucht deutlich zu machen. Wichtig ist dabei die dritte Zeile in der ich dem dritten Feld des Arrays @alles den Hash %ich zuweise.
In der vorletzten Zeile versuche ich die {'stadt'}, die im Hash %ich gespeichert ist aus dem dritten Feld des Arrays @alles aufzurufen ... aber es geht nicht. Ich vermute einfach einen Fehler in der Schreibweise
#!perl/bin
%ich = ("name","thales","strasse","uhlenkrog","stadt","kiel");
$alles[2] = %ich; # Hier wird nun dem dritten Feld von '@alles' der Hash '%ich' zugewiesen
$alles[0] = "hallo"; # Das hier ist nur zur Kontrolle, ob @alles erstellt wird
$alles[1] = "du"; # Das hier ist nur zur Kontrolle, ob @alles erstellt wird
$alles[3] = "trottel"; # Das hier ist nur zur Kontrolle, ob @alles erstellt wird
print "Content-type: text/html\n\n";
print "<html><body>";
print "<h1>Das hier gibt @alles aus:</h1>";
print $alles[0]; # Kontrolle ... funzt
print $alles[1]; # kontrolle ... funzt
print $alles[3]; # Kontrolle ... funzt
print "<br><br><br><br>";
print $alles[2]{'stadt'}; # Ich will als Ausgabe "kiel" erhalten, aber... statt dessen gar keine...
print "</body></html>";
Danke im voraus für Hinweise, die zur Ergreifung des Fehlers führen ... <img src="http://www.broder.purespace.de/thales.jpg" alt="">
Hi,
In der vorletzten Zeile versuche ich die {'stadt'}, die im Hash
%ich gespeichert ist aus dem dritten Feld des Arrays @alles
aufzurufen ... aber es geht nicht. Ich vermute einfach einen
Fehler in der Schreibweise
Nein, dein Fehler liegt in der Erstellung des Hashs - du hast
versucht, einen Array zu erstellen, statt eines Hashes.
Ein Hash ist so aufgebaut:
%hash = ("key" => "wert");
So sähe dein Hash ungefähr so aus:
%ich = ("name" => "thales",
"strasse" => "uhlenkrog",
"stadt" => "kiel");
mfg
CK1
Hi CK1,
Nein, dein Fehler liegt in der Erstellung des Hashs - du hast
versucht, einen Array zu erstellen, statt eines Hashes.Ein Hash ist so aufgebaut:
%hash = ("key" => "wert");
So sähe dein Hash ungefähr so aus:
%ich = ("name" => "thales",
"strasse" => "uhlenkrog",
"stadt" => "kiel");
Laut SELFHTML kann man einen Hash auch so erstellen, wie ich es getan habe:
<../../tgcb.htm#a3>
ich habe trotzdem deine Schreibweise ausprobiert, allerdings ohne Erfolg ...
Vielleicht hast ja noch eine Idee ??
Trotzdem vielen Dank ... <img src="http://www.broder.purespace.de/thales.jpg" alt="">
Hi,
%ich = ("name","thales","strasse","uhlenkrog","stadt","kiel");
$alles[2] = %ich; # Hier wird nun dem dritten Feld von '@alles' der Hash '%ich' zugewiesen
Soll jetzt nun dieser gesamte Hash in diesem einen Skalar gespeichert werden? Das geht natürlich nicht.
(Auf meinem System speichert er nur "1/8" in $alles[2]. Was das nun bedeutet, weiß ich nicht. Mich wunder
es schon, daß er das überhaupt ohne Fehlermeldung akzeptiert)
Du kannst höchstens eine Referenz auf den Hash in das Array speichern. Das würde dann mit
$alles[2] = %ich; funktionieren. (wenn ich mich recht erinnere)
Gruß,
Tobias
Hallo,
»» #!perl/bin
Das ist eine interessante shebang-zeile. Dein Interpreter heißt offenbar 'bin' un ist immer in einem Unterverzeichnis namen 'perl' vom aktuellen Verzeichnis aus zu finden?
lese dazu einmal
perldoc perlrun -> Location of Perl
$alles[2] = %ich; # Hier wird nun dem dritten Feld von '@alles' der Hash '%ich' zugewiesen
Du solltest
$alles[2] = %ich;
bzw.
$alles[2] = {%ich};
verwenden.
Siehe dazu
perldoc perldsc -> Array of Hashes
bzw.
perldoc perlref -> Making References
bzw.
perldoc perlreftut
Grüße
Klaus
Danke Jungs,
Das mit der Referenz hats gebrachts, nun funktioniert es so, wie es soll ...
Ciau <img src="http://www.broder.purespace.de/thales.jpg" alt="">