Mehrdimensionale Arrays (Listen)
Richie
- perl
Hi Ihr,
ich würde gerne eine List in einer List abspeichern.
Habe aber das Problem, daß ich danach mit der Indizierung
(Liste[Ind1][Ind2]) nicht mehr darauf zugreifen kann.
Beim Anzeigen der list mit print werden zwei Einträge in der Form HASH0xnnnnnnnn gezeigt.
Im Moment sieht das Codestück zur Initialisierung so aus:
for(@Liste)
{
push(@Tabelle, split(/;/, @Liste);
}
Habt ihr eine Idee warum die Reaktion so merkwürdig ist?
Greetz
Richie
Im Moment sieht das Codestück zur Initialisierung so aus:
for(@Liste)
{
»» push(@Tabelle, split(/;/, @Liste);
}
Hi, Richie
Es ist gut möglich das ich völlig falsch liege aber müßte der Code nicht nomalerweise folgendermaßen lauten:
for(@Liste)
{
push(@Tabelle, split(/;/, $_);
}
Oder was willst du splitten?
Johannes
Im Moment sieht das Codestück zur Initialisierung so aus:
for(@Liste)
{
»» push(@Tabelle, split(/;/, @Liste);
}Hi, Richie
Es ist gut möglich das ich völlig falsch liege aber müßte der Code nicht nomalerweise folgendermaßen lauten:for(@Liste)
{
»» push(@Tabelle, split(/;/, $_);
}
Oder was willst du splitten?
Johannes
Ja, Du hast Recht...
Ich habe das hier in der Eile "übersehen". Im Original habe ich das so gemacht wie Du es korrigiert hast.
Hi!
for(@Liste)
{
»» push(@Tabelle, split(/;/, $_);
}
Dadurch werden alle neuen Element ans Ende des *eindimensionalen* Arrays @Tabelle gehaengt. Stattdessen muessen die gesplitteten Teile erstmal in einem anonymen Array untergebracht werden, was durch einfassen in eckige Klammern passiert:
[ split(/;/, $_) ]
Dieser Ausdruck stellt jetzt ein Skalar dar, genauer eine Referenz auf ein anonymes Array. Und dieses *Skalar* wird jetzt an @Tabelle angehaengt.
push(@Tabelle, [ split(/;/, $_) ] );
Zugriff dann mit $Tabelle[$x][$y].
Empfohlene Literatur: perlref, perllol, perldsc
So long
Hallo,
ich vermute mal, du willst einen eintrag in der liste als liste ansprechen.
$Liste[index] = Liste oder ?
dazu muss explizit eine zuweisung als liste stattfinden, wenn du sie wieder lesen willst
@neue_liste = @$liste[index];
das ist aber insgesamt alles so kompliziert, das ich selber auch nicht immer 100% dahintersteig wie das zu funktionieren hat.
z.b.
@{$hash{$key}} ist eine liste in einem hash
ein wirklich (für einen Perl anfänger) komplexes/kompliziertes thema.
Struppi