Sebwing: Sektionen aus einer Textdatei auslesen

Hallo,
ich möchte aus einer Textdatei, die in Sektionen aufgeteilt ist, die
Zeilen zählen lassen.
Jede Sektion fängt mit [name] an, und endet einfach mit dem neuen
Sektionsnamen, oder dem EOF.
Kann mir jemand einen regulären Ausdruck schreiben, der mir die Zeilenanzahl zwischen den einzelnen Sektionen ausließt ?

Danke,

Sebwing

  1. Hi,

    ich möchte aus einer Textdatei, die in Sektionen aufgeteilt ist, die
    Zeilen zählen lassen.
    Jede Sektion fängt mit [name] an, und endet einfach mit dem neuen
    Sektionsnamen, oder dem EOF.

    dazu gibt es bei http://www.cpan.org/ das Modul Config::IniFiles.

    Kann mir jemand einen regulären Ausdruck schreiben,

    Was macht Dich glauben, derartiges würde mit einer einfachen RegExp gehen?

    der mir die Zeilenanzahl zwischen den einzelnen Sektionen ausließt ?

    Wenn Du die Zeilenzahl mit in die Datei schreibst, kannst Du sie vielleicht mit einer RegExp auslesen. Andernfalls musst Du sie anderweitig ermitteln.

    Cheatah

    1. Kann ich nicht mit einem RegExp die Zeichenkette zwischen
      zwei Sektionen ausschneiden, und dann mit $. die Zeilen zählen lassen ?

      1. Hoi,

        Kann ich nicht mit einem RegExp die Zeichenkette zwischen
        zwei Sektionen ausschneiden, und dann mit $. die Zeilen zählen
        lassen ?

        Nein. Wohl aber kannst du mit einem RegEx herausfinden, ob die neue
        Sektion angefangen hat, z. B. so:

        my $lines   = 0;
        my $section = '';
        my %section_lines = ();
        while(<DAT>) {
          if(/^\s*[(\w+)]/) {
            $section_lines{$section} = $lines if $section;
            $section = $1;
            $lines   = 0;
          }
          else {
            $lines++ if $section;
          }
        }

        Gruesse,
         CK

      2. Hi,

        Kann ich nicht mit einem RegExp die Zeichenkette zwischen
        zwei Sektionen ausschneiden,

        zu gefährlich. RegExp haben bestimmte Aufgaben, und dies geht darüber hinaus. Wenn Du eine funktionierende RegExp entwickelst, hast Du morgen auf einmal neue Daten vorliegen und erhälst (aus Deiner Sicht!) unsinnige Ergebnisse.

        Benutze hierfür _keine_ RegExp. Das von mir genannte Modul ist ideal.

        und dann mit $. die Zeilen zählen lassen ?

        perldoc perlvar:
        """
        $.
        The current input line number for the last file handle from which you read (or performed a seek or tell on). [...]
        """

        Eine RegExp ist kein File-Handle.

        Cheatah

        1. Danke !
          Hab mir das Modul, sowie den Quellcode angeschaut !

          Gruß,

          Sebwing