use strict; use warnings; my %lookup = (); open(F1, "< datei1.txt") or die $!; while() { $_ =~ s![\r\n]+$!!; my ($key, $val) = split /-/, $_; $lookup{$key} = $val; } close F1; my $r = join "|", map keys %lookup; open(F2, "< datei2.txt") or die $!; open(F3, "> datei3.txt") or die $!; while() { s!($r)!$lookup{$1}!ge; print F3 $_; } close F3; close F3;