Hallo, ich habe hier ein Hash von Arrays:
my %ex_cp; $ex_cp{"hashkey"} = [ "wert1", "wert2" ];
klappt prima. Jetzt will ich gezielt auf einzelne Elemente eines Arrays zugreifen:
$ex_cp{"hashkey"}[0] @{$ex_cp{"hashkey"}}[0]
geht alles nicht ;-(
In der Lektüre finde ich nur, wie ich sowas im Ganzen verarbeite oder mit foreach durchwackle, aber das will ich nicht. Gibt mir jemand den richtigen Syntax-Schubs?
Mit freundlichen Grüßen
Jens Puruckherr
Hallo zusammen,
Am 2003-01-24 13:22 +0100 schrieb Jens Puruckherr:
Hallo, ich habe hier ein Hash von Arrays:
my %ex_cp; $ex_cp{"hashkey"} = [ "wert1", "wert2" ];
$ex_cp{"hashkey"}[0] @{$ex_cp{"hashkey"}}[0]
geht alles nicht ;-(
Ich habe das mal bei mir ausprobiert. Geht vorzüglich, es kommen keine Warnungen. Konkret habe ich folgendes (vollständiges) Skript probiert:
-------- snip ----------- #!/usr/bin/perl -w
my %ex_cp; $ex_cp{"hashkey"} = [ "wert1", "wert2" ];
print $ex_cp{"hashkey"}[0], "\n"; print $ex_cp{"hashkey"}[1], "\n";
print @{$ex_cp{"hashkey"}}[0], "\n"; print @{$ex_cp{"hashkey"}}[1], "\n"; -------- snip -----------
Ausgabe: wert1 wert2 wert1 wert2
Ich benutze perl 5.6.1; vielleicht hast Du noch eine sehr alte Perl-Version?
Ciao, Pitti
On Sun, Jan 26, 2003 at 01:30:11PM +0100, Martin Pitt wrote:
$ex_cp{"hashkey"} = [ "wert1", "wert2" ];
print $ex_cp{"hashkey"}[0], "\n"; print $ex_cp{"hashkey"}[1], "\n";
Da Du in $ex_cp{hashkey} eine Referenz auf ein Array ablegst, würde ich das auch so benutzen:
print $ex_cp{hashkey}->[0];
.. also dereferenzieren. Denn ich glaube, die Variante von Martin funktioniert nur, weil Perl den 'do the right thing'-Mechanismus eingebaut hat.
Heiko
Hallöle,
Am 27.01.03 schrieb Heiko Schlittermann:
On Sun, Jan 26, 2003 at 01:30:11PM +0100, Martin Pitt wrote:
$ex_cp{"hashkey"} = [ "wert1", "wert2" ];
print $ex_cp{"hashkey"}[0], "\n"; print $ex_cp{"hashkey"}[1], "\n";
Da Du in $ex_cp{hashkey} eine Referenz auf ein Array ablegst, würde ich das auch so benutzen:
print $ex_cp{hashkey}->[0];
.. also dereferenzieren. Denn ich glaube, die Variante von Martin funktioniert nur, weil Perl den 'do the right thing'-Mechanismus eingebaut hat.
Richtig! Aber das sollte bei seinem Perl genauso funktionieren; ausserdem hat er ja auch die explizit dereferenzierende Variante ${$hash["key"]}[0] versucht, die ja angeblich ebenfalls nicht ging.
Ciao, Pitti
Am 27. Januar 2003 schrieb Martin Pitt:
ausserdem hat er ja auch die explizit dereferenzierende Variante ${$hash["key"]}[0] versucht, die ja angeblich ebenfalls nicht ging.
Nein, er hatte @{$ex_cp{"hashkey"}}[0] geschrieben und das geht in diesem Zusammenhang nicht.
Torsten
lug-dd@mailman.schlittermann.de