#!/usr/bin/perl use strict; use warnings; use File::Util; # Das Verzeichnis mit den auszulesenden Dateien: my $sourceDir = 'C:\test'; # Die Datei, in die geschrieben werden soll: my $outFile = "out.txt"; # Die Zieldatei wird zum schreiben geöffnet: open my $outFH, ">", $outFile or die $!; # File-Util-Objekt erzeugen: my $fu = File::Util->new(); # Das Verzeichnis wird ausgelesen (hier: nur .txt-Dateien) und der Inhalt wird in ein Array geschrieben: my @allfiles = grep /\.txt$/, $fu->list_dir($sourceDir, qw(--files-only --recurse)); # 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, "<", $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 $sourceFH; } close $outFH; print "fertig!";