#!/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!";