我想要使用正则表达式和包含更改的哈希表更改一行。我使用下面的代码更改:无法识别的转义 m通过与PERL的正则表达式错误
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...",
(删除\\
)。
但我仍然想知道问题是什么,因为将来我可能需要添加其他可能导致问题的值。
QR并不在这里帮助,它改变了它所被赋予成别的东西。它添加和更改,以便它将以正则表达式语言。 – SIMEL 2010-12-16 14:57:04
由于有问题的字符位于散列_keys_中,因此qr不会起作用,因为散列键只能是字符串。 – cjm 2010-12-16 19:23:32