我必须用散列值替换散列中的所有键。此操作在文件中执行。
以下是我的代码:
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;
请指导我。
答案 0 :(得分:2)
用哈希值替换所有键的实例:
while ( my $line = <$in> ) {
$line =~ s/$_/$replstr{$_}/g for keys %replstr;
print $out $line;
}
请注意,/e
修饰符会将替换视为代码,而不是模式