使用Perl将密钥替换为文件中的值

时间:2012-09-18 06:52:12

标签: regex perl

我必须用散列值替换散列中的所有键。此操作在文件中执行。

以下是我的代码:

my $file= 'IFandENDIF.txt';
my $bak= "$file.bak";
rename $file, $bak or die "cannot rename $file into $bak: $!";

open( my $in,  '<', $bak)  or die "cannot open $bak: $!";
open( my $out, '>', $file) or die "cannot create $file: $!";

while( <$in>)
{ 
    s/if(exists(%replstr))/$replstr{$1}/xeg;    
    print {$out} $_;   
}

close $in; 
close $out;

请指导我。

1 个答案:

答案 0 :(得分:2)

用哈希值替换所有键的实例:

while ( my $line = <$in> ) {

    $line =~ s/$_/$replstr{$_}/g for keys %replstr;
    print $out $line;
}

请注意,/e修饰符会将替换视为代码,而不是模式