Zeilen- und Spaltenanzahl eines Arrays ausgeben - WIE?
Hannes
- perl
Hallo,
ich habe z.B. ein Array @benutzerdaten, in dem Login,Passwort und einige andere Daten gespeichert sind.
Da zum einen ich nicht weiss, wieviele Benutzer es derzeit gibt, zum anderen auch nicht, wie viel Eigenschaften denen zugeordnet werden (in dem Array) waere es mir SEHR hilfreich, wenn mir jemand einen Tip geben kann, wie man da rankommt. Ich hatte es so versucht:
$spaltenanzahl=@benutzerdaten;
aber $zeilenanzahl???
ich hatte dann das Array ueber zwei for-Schleifen in eine Spalten- und einen Zeilen Array zerlegt (Z.B. die Namen und die Eigenschaften), von diesen konnte ich dann (weil zweidimensional) mit @namen die Anzahl der Zeilen und mit @eigenschaften die anzahl der spalten auslesen. Aber die Routine brauche ich oft (für verschiedene Arrays) und seit ich "use strikt" und "perl-w" benutze meldet er (vermutlich auch deswegen) bei bestimmten Parameterkombinationen
Use of uninitialized value at ea.plx line 861.
Alle Variablen sind deklariert. Es kommt Zeilenmaessig hin. Kann es daran liegen???
Hannes
Hi,
$spaltenanzahl=@benutzerdaten;
eigentlich gibt genau das die Zeilenanzahl, also im
scalaren Context die Anzahl der Array Elemente
Genauer:
$listenelemente = scalar @array
aber $zeilenanzahl???
ditto
Die Spalten... nunja kommt darauf an was du als Spaltentrenner
nimmst, darauf kannst du ja zeile für zeile die split
Funktion anwenden und deren Rückgabe auswerten.
HTH; Rolf
Moin!
ich habe z.B. ein Array @benutzerdaten, in dem Login,Passwort und einige andere Daten gespeichert sind.
Wie genau ist denn das aufgebaut?
In Perl gibt es so direkt keine mehrdimensionalen Arrays, daher gibt es dort auch keine Spalten- oder Zeilenanzahlen. Alles, was es gibt, ist die Anzahl der Elemente, die Du, wie Du ja schon weisst, erhaeltst, indem Du das Array im skalaren Kontext verwendest.
Um weiteres zu sagen, muesste man erstmal wissen, wie genau Du die zweite Dimension realisierst hast. (Z.B. so, dass jedes Arrayelement seinerseits eine Referenz auf ein anderes Array ist? Dann waere scalar(@{$benutzerdaten[0]}) wohl die Loesung.)
So long