Hannes: Zeilen- und Spaltenanzahl eines Arrays ausgeben - WIE?

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

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

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