A te megoldásod azért lassú, mert minden alkalommal, amikor szerepel az s/// kifejezés, akkor a Perlnek inicializálni kell a regexp-feldolgozót.
Ha a mit-mire párok egyszerű sztatikus sztringek, akkor tárolhatod őket egy hash-ben, és egyetlen regexp-illesztéssel elvégezheted a cserét.
BEGIN{
my %csere = (
"EZT:50048" => "ERRE",
"EZT:50049" => "EMERRE",
"EZT:50050" => "AMARRA",
)
my $regexp_string = join "|", sort keys %csere;
my $regexp = qr/$regexp_string/;
}
# ez fut le minden sorra
s/$regexp/$csere{$1}/;
Lehet, hogy még hatékonyabban meg lehet csinálni.
Ha a "mit" sztringek között van olyan, amelyik egy másiknak része, az bekavarhat.