#!/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'; my $data_file='C:\Users\User0815\Desktop\Steinhaus\Perl\data.xml'; my $outp_file='C:\Users\User0815\Desktop\Steinhaus\Perl\data.out.xml'; my $old_file='C:\Users\User0815\Desktop\Steinhaus\Perl\data.old.xml'; # einlesen der Dateipfade open(my $pfh, '<', $path_file) or die "Fehler beim öffnen $path_file $!\n"; my @Dateien = readdir(DIR); foreach(@Dateien) { if($_ =~ /\.txt$/) { open(my $pfh,"$_") or die $!; # 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)!; # daten Datei öffnen open(my $dfh, '<', $data_file) or die "Fehler beim öffnen $data_file $!\n"; # Ausgabedatei öffnen open(my $ofh, '>', $outp_file) or die "Fehler beim öffnen $outp_file $!\n"; while(<$dfh>) { # Zeile durchsuchen und und Ersetzen $_=~s/$search_str/$replace{$1}/g; # Zeile ausgeben print $ofh $_; } close($ofh); close($dfh); # daten Datei umbenennen in old rename($data_file, $old_file) or die "Fehler beim umbenenen Alt-Datei $data_file $!\n"; # outp Datei umbenennen in data.xml rename($outp_file, $data_file) or die "Fehler beim umbenenen ind neue Data-Datei $data_file $!\n"; close $pfh; } } # fertig Meldung print "Fertig.\n";