Kalle: Dateiname einlesen und verwenden

Hi!
Habe folgendes Problem: Ich habe ganz viele Datein  in einem Verzeichnis, die eine ähnliche Benennung aufweisen (var.accuracy.out). Der Teil var ist von Datei zu Datei unterschiedlich. Nun will ich, daß der Dateiname automatisch eingelesen wird und der Teilbis zum ersten Punkt in einer der Datei abgespeichert wird (anschließend soll der Inhalt der Datei noch dahinter gespeichert werden, aber das krieg ich glaub ich dann schon hin :) )
Danke, Kalle

  1. Hi!

    Habe folgendes Problem: Ich habe ganz viele Datein  in einem Verzeichnis, die eine ähnliche Benennung aufweisen (var.accuracy.out). Der Teil var ist von Datei zu Datei

    Anker setzen für Regexp!

    ^ Zirkumflex steht für string-Anfang
    $ steht für String-ende

    sowas wie =~ /^.+$./

    sollte den Teil vom Anfang bis zum ersten Punkt rausfischen, wobei .+ für beliebig viele Zeichen steht.

    ungeprüft.

    --roro

    1. hmm...

      sowas wie =~ /^.+$./

      besser...

      my $s = 'var.accuracy.out';
      $s =~ /^(\w+)./;
      print "$1\n"; # var

      Vorausgesetzt, im String vor dem ersten Punkt stehen Zeichen, die \w entsprechen (Buchstaben, Ziffern, Underscore).

      --roro

  2. Habe folgendes Problem: Ich habe ganz viele Datein  in einem Verzeichnis, die eine ähnliche Benennung aufweisen (var.accuracy.out). Der Teil var ist von Datei zu Datei unterschiedlich. Nun will ich, daß der Dateiname automatisch eingelesen wird und der Teilbis zum ersten Punkt in einer der Datei abgespeichert wird (anschließend soll der Inhalt der Datei noch dahinter gespeichert werden, aber das krieg ich glaub ich dann schon hin :) )

    kann es sein das du den diamant Operator suchst?
    In deinem Fall dürfte in etwa sowas rauskommen:

    open F, ">test.txt";  
    while(<*.accuracy.out>)  
    {  
    /(.*)\.accuracy\.out/;  
    print F $1;  
    open F2, $_;  
    print F join "", <F2>;  
    close F2;  
    }  
    close F;  
    
    

    Da muss nur noch ein chomp eingebaut werden um die Newlinezeichen aus den Dateien zu entfernen.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hey,
      kleine Korrektur:

      diamant Operator

      Diamantoperator ist gleich readline-Funktion, siehe http://perldoc.perl.org/functions/readline.html und http://perldoc.perl.org/perlop.html#I%2FO-Operators-operator%2C-i%2Fo-operator%2C-io-io-while-filehandle-<>-%40ARGV

      while(<*.accuracy.out>)

      Das hier ist aber die glob-Funktion, und es ist guter Stil, sie auch mit dem Namen zu schreiben, siehe http://perldoc.perl.org/functions/glob.html und http://perldoc.perl.org/File/Glob.html

      --
      水-金-地-火-木-土-天-海-冥
      1. kleine Korrektur:

        sehr schön, wieder was gelernt (da hatte ich wohl einige Ausdrücke durcheinander geworfen)

        Perl ist schon toll ;-)

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  3. Danke für die Hilfe, auch wenn ich sie nicht verstanden habe! Hab es jetzt aber doch noch anders hinbekommen, nämlich mit dem split-Befehl.
    lg Kalle

    1. Danke für die Hilfe, auch wenn ich sie nicht verstanden habe! Hab es jetzt aber doch noch anders hinbekommen, nämlich mit dem split-Befehl.

      Der split Befehl liest aber keine Dateinamen???
      Hab ich deine Frage falsch verstanden?

      Struppi.

      --
      Javascript ist toll (Perl auch!)
      1. Hell-O!

        Der split Befehl liest aber keine Dateinamen???

        Wieso, du machst mit dem RegExp nichts anderes:

        while(<*.accuracy.out>)  
        {  
        /(.*)\.accuracy\.out/;  
        print F $1;  
        }
        

        Und das geht halt auch mit split:

        while(<*.accuracy.out>) {  
          print F ((split /\./, $s)[0]);  
        }
        

        (oder ähnlich)

        Hab ich deine Frage falsch verstanden?

        Nein, glaube ich nicht.

        Siechfred

        --
        Ich bin strenggenommen auch nur interessierter Laie. (molily)
        Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.
        1. Der split Befehl liest aber keine Dateinamen???

          Wieso, du machst mit dem RegExp nichts anderes:

          Das einlesen der Dateinamen erfolgt mit dem glob Operator oder Funktion und nicht mit der RegExp

          Hab ich deine Frage falsch verstanden?

          Nein, glaube ich nicht.

          Ich hatte ihn die Frage so gelesen, dass er Wissen wollte wie er die Dateinamen filtert.

          Struppi.

          --
          Javascript ist toll (Perl auch!)
          1. Der split Befehl liest aber keine Dateinamen???
            Wieso, du machst mit dem RegExp nichts anderes:
            Das einlesen der Dateinamen erfolgt mit dem glob Operator oder Funktion und nicht mit der RegExp

            Missverständlich ausgedrückt, ja. Aber die zwei dargestellten Varianten sollten doch gezeigt haben, worauf ich hinauswollte.

            Ich hatte ihn die Frage so gelesen, dass er Wissen wollte wie er die Dateinamen filtert.

            Und zusätzlich den variablen Teil wegschreibt. Hier verwendest du einen Regulären Ausdruck, der OP hat es offensichtlich mit split gemacht.

            Siechfred

            --
            Ich bin strenggenommen auch nur interessierter Laie. (molily)
            Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.