Thread Einlesen mehrerer Dateien (38 answers)
Opened by Alex at 2013-04-23 11:08

payx
 2013-04-23 12:02
#167202 #167202
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo Alex,

hier ein Minimalbeispiel, das Du vielleicht als Ausgangspunkt brauchen kannst:

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
35
36
#!/usr/bin/perl

use strict;
use warnings;

# Das Verzeichnis mit den auszulesenden Dateien:
my $sourceDir = 'C:\test';

# Die Datei, in die geschrieben werden soll:
my $outFile = "out.txt";

# Das Verzeichnis wird ausgelesen (hier: nur .txt-Dateien) und der Inhalt wird sortiert in ein Array geschrieben:
opendir(my $sourceDH, $sourceDir) or die $!;
my @allfiles = grep /\.txt$/, sort readdir($sourceDH);
closedir $sourceDH;

# Die Zieldatei wird zum schreiben geöffnet:
open my $outFH, ">", $outFile or die $!;

# Schleife über alle Dateien im Array (NB: for ist in Perl dasselbe wie foreach)
for my $sourceFile (@allfiles) {
    
    # Eine Datei wird lesend geöffnet
    open my $sourceFH, "<", $sourceDir . '/' . $sourceFile or die $!;
    
    # Schleife über die Zeilen in einer Datei
    while (my $row = <$sourceFH>) {
        
        # Text, der zwischen 'Blockanfang' und 'Blockende' liegt (Flipflop-Operator), wird in die Zieldatei geschrieben.
        print $outFH $row if $row =~ /Blockanfang/ .. $row =~ /Blockende/;      
    }
}

close $outFH;

print "fertig!";

HTH
Grüße
payx

View full thread Einlesen mehrerer Dateien