Beat: mehrdimensionales Array abfragen

Beitrag lesen

Hallo,

ich erzeuge so ein Array:

push (@stoerliste,[$stoernr,$stoertyp,$stoertext,$stoersms,$stoerreserve1,$stoerreserve2,$stoerreserve3]);

Du baust also einen Array,
Dessen Elemente Referenzen auf anonyme Arrays sind

Und möchte über eine "foreach" Schleife darauf zugreifen.

my ($nr) = @_;

Was zum Teufel ist @_ ?
(Ich weiss was @_ ist, aber es ist wohl schlechter Code)

my ($nr) = @_;

ist das gleiche wie
my $nr = $_[0];

my $zaehler = 0;

foreach(@stoerliste)

Merke ab hier steht dir S_ als Alias zur Verfügung.
Das blöde ist, das du im weiteren keinen Gebrauch von dem Element machst, über welches du iterierst.

{
  if (@$_[0] == $nr)

Hier greifst du auf das erste Element in @_ zu, welches du in der Anname dereferenzierst, dass es eine Arrayreferenz beinhalte.
Wenn $_[0] keine Referenz ist, hast du einen Fehler
Andernfalss dereferenzierst du eine Referenz und Vergreichst sie mit einer Refernenz, was auch falsch ist.

{
   return $zaehler;

Sinnlos, weil deine Abfrage immer wahr oder immer falsch ist.

}
  $zaehler++;
}

Hier kommt aber bei "@$_[0]" die Fehlermeldung, warum ????

Welche? Perl ist sehr freundlich zu dir

Es sollte doch so funktionieren.

Sieht nicht so aus.

Ich gewinne den Eindruck dass du nicht weisst, was $_[0] ist.
Es ist das erste Element in @_ und somit das gleiche wie $nr

Gruß
         brain

vielleicht willst du das

push( @arr , [1, 2, 3] );

foreach ( @arr ){

$_ ist eine Rererenz

$_->[0] == 1 and be_happy();

oder

@{$_}[0] == 1 and be_happy();

}

mfg Beat