#!/usr/bin/perl use strict; use warnings; my $path_file='C:\Users\User0815\Desktop\Steinhaus\Perl\path.txt'; my $name_file='C:\Users\User0815\Desktop\Steinhaus\Perl\names.txt'; # einlesen der Namenspaare my %replace; open(my $nfh, '<', $name_file) or die "Fehler beim öffnen $name_file $!\n"; while(my $line=<$nfh>) { chomp($line); $replace{$1}=$2 if($line=~/^\s*(.+?)\s*=>\s*(.+?)\s*$/); } close($nfh); # erstellen der Suchliste my $search_str=join('|', map{qr(\Q$_\E)}keys(%replace)); $search_str=qr!($search_str)!; # einlesen der Dateipfade open(my $pfh, '<', $path_file) or die "Fehler beim öffnen $path_file $!\n"; while(my $file=<$pfh>) { # Zeilenumbruch am Ende entfernen chomp($file); # überspringe alle Dateien, die nicht mit ".xml" enden next unless($file =~ /\.xml$/); # Namen für die alte Datei erzeugen (my $old_file=$file)=~s/\.([^.]+)$/.old.$1/; # nach schauen, ob es die Datei "$old_file" schon gibt. if(-f $old_file) { # Warnung ausgeben warn("Datei $old_file existiert, sie wird gelöscht!\n"); # Datei löschen unlink($old_file) or die("konnte $old_file nicht löschen!\n"); } #Datei umbenennen: rename($file, $old_file) or die("Fehler beim Umbenennen von $file nach $old_file $!\n"); # daten Datei öffnen open(my $dfh, '<', $old_file) or die("Fehler beim öffnen $old_file $!\n"); # Ausgabedatei öffnen open(my $ofh, '>', $file) or die("Fehler beim öffnen $file $!\n"); while(<$dfh>) { # Zeile durchsuchen und und Ersetzen $_=~s/$search_str/$replace{$1}/g; # Zeile ausgeben print $ofh $_; } close($ofh); close($dfh); } close($pfh); # fertig Meldung print "Fertig.\n";