Thorsten Steffen: Zeilenumbrüche in komplettem Array ersetzen

Hi,
ich habe mit folgendem Script eine Datei eingelesen:
open(DATEI,"<karte.txt")die"karte.txt nicht gefunden\n";
@zeilen=("");
while(<DATEI>)
{
push(@zeilen,$_);
}
close (DATEI);

Allerdings befindet sich danach am Ende jeder Zeile des Arrays ein Zeilenumbruch. Da ich mit regulären Ausdrücken nach bestimmten Tabelleninhalten suche, stört dies mich aber. Wie kann ich diese Zeilenumbrüche löschen ?

Gruß
Thorsten

  1. Hallo Thorsten,

    while(<DATEI>)
    {
    push(@zeilen,$_);
    }
    close (DATEI);

    »»

    Allerdings befindet sich danach am Ende jeder Zeile des Arrays ein Zeilenumbruch. Da ich mit regulären Ausdrücken nach bestimmten Tabelleninhalten suche, stört dies mich aber. Wie kann ich diese Zeilenumbrüche löschen ?

    Mit einer kleinen Ergänzung im Einlesebereich:

    chomp() (ab Perl5) entfernt das als $INPUT_RECORD_SEPARATOR bzw. $/ eingestellt Zeichen (Zeichenkette?) vom Ende des Strings. Die Voreinstellung ist Newline.

    Gruß AlexBausW

    1. Hab einfach
      chomp(@zeilen);
      nach dem Schliessen der Datei angegeben, ist doch richtig so, oder ?
      Funktioniert zumindest.

      Gruß und Danke
      Thorsten

      Hallo Thorsten,

      while(<DATEI>)
      {
      push(@zeilen,$_);
      }
      close (DATEI);
      »»
      Allerdings befindet sich danach am Ende jeder Zeile des Arrays ein Zeilenumbruch. Da ich mit regulären Ausdrücken nach bestimmten Tabelleninhalten suche, stört dies mich aber. Wie kann ich diese Zeilenumbrüche löschen ?

      Mit einer kleinen Ergänzung im Einlesebereich:

      chomp() (ab Perl5) entfernt das als $INPUT_RECORD_SEPARATOR bzw. $/ eingestellt Zeichen (Zeichenkette?) vom Ende des Strings. Die Voreinstellung ist Newline.

      Gruß AlexBausW

  2. Hi!

    open(DATEI,"<karte.txt")die"karte.txt nicht gefunden\n";

    @zeilen = <DATEI>;

    close (DATEI);

    chomp(@zeilen);

    So long

    P.S. Willst Du wirklich den leeren String als erstes Element der Liste? Dann musst Du am Ende noch
      unshift(@zeilen, "");
    machen.

    1. Hä ??
      Wie meinst Du das, welchen leeren String ?
      Ich möchte einfach die ganzen Zeilenumbrüche am Ende der Tabellenzeilen (Array) rausschmeißen.

      Thorsten

      P.S. Willst Du wirklich den leeren String als erstes Element der Liste? Dann musst Du am Ende noch
        unshift(@zeilen, "");
      machen.

      1. Hä ??
        Wie meinst Du das, welchen leeren String ?
        Ich möchte einfach die ganzen Zeilenumbrüche am Ende der Tabellenzeilen (Array) rausschmeißen.

        Du hattest in Deiner urspruenglichen Version am Anfang die Zeile
          @zeilen=("");
        Damit hat das Array @zeilen genau 1 Element, naemlich einen leeren String. Die Zeilen aus der Datei hast Du dann an das Array angehaengt. Und deshalb hast Du eben einen leeren String als erstes Element in der Liste. Aber scheinbar war das ja unbeabsichtigt, deshalb kannst Du das mit dem unshift() ruhig erstmal vergessen.

        So long

        1. Sorry,
          wollte nur das array initialisieren, wie mache ich das denn am besten ?

          Gruß
          Thorsten

          Hä ??
          Wie meinst Du das, welchen leeren String ?
          Ich möchte einfach die ganzen Zeilenumbrüche am Ende der Tabellenzeilen (Array) rausschmeißen.

          Du hattest in Deiner urspruenglichen Version am Anfang die Zeile
            @zeilen=("");
          Damit hat das Array @zeilen genau 1 Element, naemlich einen leeren String. Die Zeilen aus der Datei hast Du dann an das Array angehaengt. Und deshalb hast Du eben einen leeren String als erstes Element in der Liste. Aber scheinbar war das ja unbeabsichtigt, deshalb kannst Du das mit dem unshift() ruhig erstmal vergessen.

          So long

          1. Sorry,
            wollte nur das array initialisieren, wie mache ich das denn am besten ?

            @zeilen = ();

            Also *nichts* in die Klammern. Dann hast Du ein leeres Array. So einfach ist das. ;-)

            So long