perl_anfänger: auf arrayelemente zugreifen

hallo

wie greife ich denn auf ein perl-array-element zu???

@arr = ("hund","katze","maus");

gehen tuts ja so:
  $kleingetier = $arr[2];
oder so
  $kleingetier = @arr[2];

was ist denn nun richtig?
was üblich?
was empfehlt ihr?

vielen dank
und gruss

  1. Hi,

    wundert mich dass das  $kleingetier = @arr[2]; funktioniert ...
    Ich würde es so machen :  $kleingetier = $arr[2];
    siehe
    http://www.tekromancer.com/perl/4_3.html

    cu
    alligator

    1. Hi,

      wundert mich dass das  $kleingetier = @arr[2]; funktioniert ...

      perldoc perlfaq4
      "What is the difference between $array[1] and @array[1]?"

      Cheatah

      1. Hallo Cheatah

        perldoc perlfaq4
        "What is the difference between $array[1] and @array[1]?"

        finde ich nicht... habe die doc mit /difference durchsucht.. aber nix gefunden.

        gruss

        1. Hallo Cheatah

          perldoc perlfaq4
          "What is the difference between $array[1] and @array[1]?"

          finde ich nicht... habe die doc mit /difference durchsucht.. aber nix gefunden.

          vergiss es... online habe ich es gefunden

          danke nochmal

      2. Hi,

        aha - habs durchgelesen und afaik auch begriffen. Aber dann dürfte beim 2 Beispiel ja kein Wert in $kleingetier sein, wenn es ja dann ein Array mit einem anlegt ...

        cu
        alligator

        1. Hi,

          Aber dann dürfte beim 2 Beispiel ja kein Wert in $kleingetier sein, wenn es ja dann ein Array mit einem anlegt ...

          im Gegensatz zu den meisten anderen Sprachen geht Perl sehr, ähm, frei mit seinen Datentypen um. Wendest Du eine Stringfunktion auf eine Zahl an, so wird sie als String behandelt; wendest Du eine Arrayfunktion auf einen Hash ein, so wird dieses als Array behandelt; wendest Du eine Stringfunktion auf ein Array an, so wird versucht, das beste daraus zu machen. Bei einem Array mit nur einem Element wird es dann halt als Skalar behandelt.

          Diese Aussage ist übrigens ziemlich stark verallgemeinert - bitte fehlinterpretiere sie nicht als Definition. Viele Funktionen sind bereits von sich aus so gestaltet, dass sie mit unterschiedlichen Datentypen jeweils sinnvoll umgehen; bei allen anderen Fällen versucht Perl eben, so gut wie möglich mit dem Fehler (ja, es ist einer) umzugehen.

          Cheatah

      3. use Mosche;

        wundert mich dass das  $kleingetier = @arr[2]; funktioniert ...

        Wobei IMHO @arr[3] in Perl 6 der Zugriff auf einen Skalar sein soll (nämlich das, was vorher $arr[3] war).

        use Tschoe qw(Matti);