Thread Dateien auslesen, nach Wort suchen und neu abspeichern funktioniert nicht ganz... (3 answers)
Opened by New at 2013-07-25 09:14

FIFO
 2013-07-25 10:38
#169117 #169117
User since
2005-06-01
469 Artikel
BenutzerIn

user image
2013-07-25T07:14:08 New
Mein Ziel ist es aber einfach nur, die .txt Dateien quasi zu sortieren nach mit .SUBCKT im Inhalt und ohne und diese dann in zwei neue Dateien zu speichern.


Hi,

Wenn Du nur zwei Listen von Dateinamen speichern willst, kannst Du das übersichtlicher lösen (ungetestet!):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl

use warnings;
use strict;

open( my $subcktFh, '>', 'SUBCKT.TXT' ) or die $!;
open( my $modelFh, '>', 'MODEL.TXT' ) or die $!;

# Alle *.txt-Dateinamen im aktuellen Verzeichnis
my @txtfiles = glob( "*.txt" );           

# Iteriere durch die Dateinamen (in sortierter Folge)
for my $file ( sort @txtfiles ) {
    open( my $fh, '<', $file ) or next;  # bei Fehler weitermachen
    # ganze Datei in Skalar einlesen, dafür $INPUT_RECORD_SEPARATOR auf undef
    # d.h. ganze Datei ist eine "Zeile", $content-Variable außerhalb des Blocks deklarieren;
    my $content;
    {
        local $/; 
        $content = <$fh>;
        close $fh;
    }
    # '.SUBCKT' am Dateianfang (\A) oder nach Newline (\n)?
    # m{...}x: Whitespace im Suchmuster ignorieren 
    if ( $content =~ m{ (\A|\n) \.SUBCKT \b }ix ) {
        print $subcktFh "$file\n";
    }
    else {
        print $modelFh "$file\n";
    }
}

close $subcktFh;
close $modelFh;


Wenn Du jeweils den ganzen Dateiinhalt anhängen willst, musst Du statt print $subcktFh "$file\n"; halt print $subcktFh "$content"; schreiben

Gruß FIFO

(Nachtrag) Lesestoff: Perldoc:perlvar (suche $INPUT_RECORD_SEPARATOR),
Wiki:WasIsteinLexikalischerFileHandle

Editiert von FIFO: Kommentare ergänzt, $/-Scope minimiert

Editiert von FIFO: scope von $content korrigiert.
Last edited: 2013-07-25 23:30:47 +0200 (CEST)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"

View full thread Dateien auslesen, nach Wort suchen und neu abspeichern funktioniert nicht ganz...