0

ファイル内の多くの配列要素を対応する別の配列要素に置き換えようとしていますが、実行に時間がかかります。もっと簡単なアプローチはありますか?以下は私のコードです:

open( my $in,  '<', "Test.txt")  or die "cannot open Test.txt $!";
open( my $out, '>', "TestFinal.txt") or die "cannot create TestFinal $!";
while( <$in>)
{ 
    for(my $i=2 ; $i<=$LastRowGlossary; $i++)
    {
        s/$variable[$i]/$vardescription[$i]/g;
    }
    for(my $j=2 ; $j<=$LastRowTable; $j++)
    {
        s/$COVERAGE_TYPE_CODE[$j]/$TCOVERAGE[$j]/g;
        s/$CVG_TEST_CRIT_CD[$j]/$TCVG_TEST_CRIT_TYP[$j]/g;
    }

    print {$out} $_;

}
close $in; 
close $out;

お知らせ下さい。

4

1 に答える 1

6

場合によっては、正規表現の生成が役立つことがあります。

#!/usr/bin/perl
use warnings;
use strict;

my @variables =    qw/a b c d e f g h/;
my @descriptions = qw/A B C D E F G H/;

my %replace;
@replace{@variables} = @descriptions;

my $string = 'xaxbxcxdxexfxgxhx';

my $pattern = '(' . join('|', map quotemeta, @variables) . ')';

$string =~ s/$pattern/$replace{$1}/g;

print "$string\n";
于 2012-10-17T12:43:58.237 に答える