norman: array mit zeigern: zugriff

hallo!

referenzen sind ja ne feine sache, wenn man damit umgehn kann :-) ...

wie kann ich den inhalt des zeigers an der stelle $pfade_all[$i] ausgeben?

pseudo-hash:
%hash = (name=>[norman,wee], ort=>[berlin,mitte]);

push(@pfade_all, $hash{"name"});

soll "norman" ergeben:
print @{$pfade_all}[0][0]; -> schmeißt nen fehler

schon mal danke für die mühe!
norman

  1. use Mosche;

    pseudo-hash:
    %hash = (name=>[norman,wee], ort=>[berlin,mitte]);

    push(@pfade_all, $hash{"name"});

    soll "norman" ergeben:
    print @{$pfade_all}[0][0]; -> schmeißt nen fehler

    Es gibt keinen Skalar $pfade_all, nur den Array @pfade_all. Deshalb:
    $pfade_all[0][0];

    use Tschoe qw(Matti);

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
    1. hi,

      push(@pfade_all, $hash{"name"});

      du hast recht bei diesem konstrukt kann ich mit $pfade_all[0][0]; auf "norman" zugreifen, aber der array @pfade_all enthält nur zeiger auf den hash und ich weiss nich wie man in diesem fall auf "norman" zugreift.

      push(@pfade_all, $hash{"name"});

      print $pfade_all[0]{$pfade_all}[0][0]; oder so ähnlich?

      print $pfade_all[0]; ergibt: SCALAR(0x19dc450)

      mfg
      norman

      use Mosche;

      pseudo-hash:
      %hash = (name=>[norman,wee], ort=>[berlin,mitte]);

      push(@pfade_all, $hash{"name"});

      soll "norman" ergeben:
      print @{$pfade_all}[0][0]; -> schmeißt nen fehler

      Es gibt keinen Skalar $pfade_all, nur den Array @pfade_all. Deshalb:
      $pfade_all[0][0];

      use Tschoe qw(Matti);

      1. use Mosche;

        Ich empfehle dir bei Referenzgeschichten mal die Ausgabe von Data::Dumper; Bsp:

        use Data::Dumper;
        print Dumper @pfade_all, $pfade_all[0];

        Mit ein bißchen Übung kannst du da alles rauskriegen.

        Außerdem bitte besser quoten... kein TOFU, bitte.

        push(@pfade_all, $hash{"name"});

        print $pfade_all[0]; ergibt: SCALAR(0x19dc450)

        Sollte dir den Hinweis geben, dass du einen Skalar dereferenzieren musst. In diesem Skalar befindet sich dann dein anonymer Array, wovon du das erste Element haben willst.

        print ${$pfade_all[0]}->[0]; # funktioniert

        Die Referenz auf deinen anonymen Array ist aber ziemlich sinnlos. Wofür brauchst du das denn?

        use Tschoe qw(Matti);

        --
          Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
  2. hallo!

    referenzen sind ja ne feine sache, wenn man damit umgehn kann :-) ...

    wie kann ich den inhalt des zeigers an der stelle $pfade_all[$i] ausgeben?

    pseudo-hash:
    %hash = (name=>[norman,wee], ort=>[berlin,mitte]);

    push(@pfade_all, $hash{"name"});

    ist das nicht doppelt gemoppelt?

    $hash{name} ist eine Referenz auf ein Array und davon willst du eine Referenz auf pfad_all pushen?

    Du willst:
    push @pfade_all, $hash{name};

    soll "norman" ergeben:
    print @{$pfade_all}[0][0]; -> schmeißt nen fehler

    Auf Referenzen greifst du mit den Pfeil zu:

    $pfade_all[0]->[0];

    Struppi.

    1. use Mosche;

      soll "norman" ergeben:
      print @{$pfade_all}[0][0]; -> schmeißt nen fehler

      Auf Referenzen greifst du mit den Pfeil zu:

      $pfade_all[0]->[0];

      In dem Fall stimmt deine Lösung nicht, wie man an meinem zweiten Posting sehen kann (weil eine Dereferenzierung fehlt). Eine Anmerkung noch meinerseite: der Pfeil zwischen zwei Dereferenzierungen ist optional.

      use Tschoe qw(Matti);

      --
        Anyone who quotes me in their sig is an idiot. -- Rusty Russell.