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 回答