我正在尝试使用正则表达式和包含更改的哈希表来更改一行。 我正在使用以下代码进行更改:
foreach $key (keys %{$hash{$sub_hash}}){
$line =~ s/$key/$hash{$csub_hash}{$key}/g;
}
我的哈希值是:
$hash{sub_hush_a}={
"\\mi2ie..." => "\\RSUop...",
"iereset..." => "\\agres...",
};
问题在于数据集中的第一对,每当它发生变化时,会放置
\\
而不是\
,而对于第二个,则只放置一个,与预期相同。此外,它给我带来了错误:
Unrecognized escape \m passed through
。出了什么问题?澄清:名称中的点不在程序中,名称比我放置的要长,并且只包含字母和数字。点是为了缩短而存在的。
编辑:
如果我将第一对更改为:
"mi2ie..." => "RSUop...",
(删除\\
),则问题得到解决(双重\\
和错误消息)。但我仍然想知道问题在哪里,因为将来我可能需要添加其他值,这可能会导致问题。