Richie: Mehrdimensionale Arrays (Listen)

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

  1. 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

    1. 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.

      1. 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

  2. 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