( pme | 2011. 03. 07., h – 21:10 )

Nálam semmi különbség a két megoldás futási ideje között.

Egyszerű megoldás:


#!/usr/bin/perl -pw

s/0:30/ERRExxx/;
s/0:40/EMERRExxx/;
s/0:50/AMARRAxxx/;

-------------------------

"Bonyolult" megoldás:


#!/usr/bin/perl -pw

BEGIN{
  %csere = (
          "0:30" => "ERRExxx",
          "0:40" => "EMERRExxx",
          "0:50" => "AMARRAxxx",
  );

  $regexp_string = join "|", sort keys %csere;
  $regexp = qr/($regexp_string)/;
}

# ez fut le minden sorra
s/$regexp/$csere{$1}/;

-----------------

Az input file mérete ~242MB, 864000 sorral, melyben ~10000 helyettesítés történik összesen.
Perl verzio: 5.10.1

A futási idő mindkét esetben ~1.5sec.