用哈希值替换文件中的文本

问题描述 投票:0回答:1

我有一个像这样的perl哈希:

{
  "case1"   => 0.05,
  "case2"   => 0.105,
  "case3"   => -0.006,
  "case4"   => -0.0005,
  "case5"   => 0.0501,
  "case6"   => 0.098,
  "case7"   => 0.16,
}

如何使用哈希键将文本中的匹配键替换为值。文本文件示例:

 set case1
 set case5
 set case3
 set case4
perl hash
1个回答
0
投票

通过键创建正则表达式

my $regex = join '|', map quotemeta, keys %hash;

然后用它代替

s/($regex)/$hash{$1}/g;

当键的长度不同时,您可能需要在创建正则表达式之前对它们进行最长排序。

© www.soinside.com 2019 - 2024. All rights reserved.