Holger: Leerzeichen ???

Hallo zusammen,

Habe mir da ein kleines Script gebastelt,
das eine txt-bank einliest und Ausgibt.

Im script wird sie so geöffnet:
.
.
open(DOWN,"<test.txt");
@link = <DOWN>;
close(DOWN);
.
.
foreach $EINTRAG(@link) {
   $EINTRAG=~s/\n//g;
   $EINTRAG=~s/\r//g;
   $EINTRAG=~s/ //g;
   ($link,$title,$bemerkung,$test) = split(//,$EINTRAG);
.
.
.
Nur, jetzt mein Problem es werden die Leerzeichen nicht Augsgegeben.
Die txt-Datei sie so aus:

link 1title 1anregung kritiktest 1
link 2title 2anregung kritiktest 2
link 3ti..... etc.

und die Ausgabe dann so:

link1    title1   anregungkritik   test1
etc...

Wie kann ich die Leerzeichen mit auslesen ?
Mit /[\s]/ habe ich schon ausprobiert, Funktioniert auch nicht.

Viele Dank

Holger

  1. Moin,

    foreach $EINTRAG(@link) {
       $EINTRAG=~s/\n//g;
       $EINTRAG=~s/\r//g;
       $EINTRAG=~s/ //g;

    ^hier nimmst Du das Leerzeichen selbst raus ;-)

    ...kein Wunder dass die dann wech sind. Nochn Tipp: Zeilenendezeichen kannst Du mit chomp() entfernen und beim Öffnen eines Filehandlers _immer_ den Fehlerstatus abfragen:

    open FH, "$file" or die $!;

    Viele Grüße, Rolf

    1. Danke für die schnelle Hilfe,
      jetzt schreibt aber das andere Script, welches eben diese
      txt-Datei erstellt als erstes Zeichen ein Leerzeichen.

      link 1title 1anregung kritiktest 1
      link 2title 2...
      link 3...

      Dann Funtkionieren meine Links nicht mehr.

      Hier das Script:

      foreach $EINTRAG(@test) {
         $EINTRAG=~s/\n//g;
         $EINTRAG=~s/\r//g;
         ($link,$title,$bemerkung,$test) = split(//,$EINTRAG);
      .  
      .
      .
           }
      push (@neu_liste,"$link$titlebemerkung$test\n");
      }
      .
      .
      open(TEST, ">test.txt");
      print TEST"@neue_liste";
      close(TEST);

      Danke

      Holger

      1. Moin,
        wenn ichs richtig schnalle muss also nur das Leerzeichen am Anfang raus? Geht so:

        $EINTRAG=~s/^ //g;

        Viele Grüße, Rolf

        1. Das Problem von vorher ist OK !!!

          Jetzt ist das Problem,(Beim Schreiben der txt-Datei)
          Das Script (unten) fügt immer vorne ein Leerzeichen in die txt ein.
          Das Problem daran, der link 1 ist die URL des Title 1.
          und das Leerzeichen ist halt den da drinnen, und die
          Seite kann dann nicht gefunden werden.

          .
          .
          link 1title 1anregung kritiktest 1
          link 2title 2...
          link 3...
          ^hier kommt das Leerzeichen ;-(
          Dann Funtkionieren meine Links nicht mehr.

          Hier das Script:

          foreach $EINTRAG(@test) {
             $EINTRAG=~s/\n//g;
             $EINTRAG=~s/\r//g;
             ($link,$title,$bemerkung,$test) = split(//,$EINTRAG);
          .  
          .
          .
               }
          push (@neu_liste,"$link$titlebemerkung$test\n");
          }
          .
          .
          open(TEST, ">test.txt");
          print TEST"@neue_liste";
          close(TEST);

          Danke

          Holger

          1. Hallo da bin ich wieder !

            Problem gelöst.

            Das Posting von Andreas Bierhals, hat beim zwiten Problem
            geholfen. Danke euch Beiden.

            Chio,

            Holger

      2. Moin,

        Danke für die schnelle Hilfe,
        jetzt schreibt aber das andere Script, welches eben diese
        txt-Datei erstellt als erstes Zeichen ein Leerzeichen.

        link 1title 1anregung kritiktest 1

        »»  link 2title 2...
        »»  link 3...

        Dann Funtkionieren meine Links nicht mehr.

        was Du suchst, ist folgender Ausdruck:

        $EINTRAG =~ s/^ +//;

        Das '+' bedeutet, daß beliebig viele gleichartige Zeichen unmittelbar
        folgen dürfen. Das '^' am Anfang bedeutet, daß das/die Leerzeichen
        am Anfang des Suchausdruckes stehen muß/müssen. Da man nur
        einmal Leerzeichen entfernen will, kann man das 'g' am Ende weglassen
        (muß aber nicht). Das ganze findet sich ausführlichst auch auf
        <../../tgcg.htm>.

        Bis dannundwann

        Andreas