( kikuchiyo | 2011. 03. 07., h – 15:14 )

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.