我找不到将trans
的单引号转换为转义的单引号的方法:
say ($ = "'well done'").=trans("'" => "\\\'" ) ;# OUTPUT: «\well done\»
say ($ = "'well done'").=trans(<'> => Q [\'] ) ;# OUTPUT: «\well done\»
say ($ = "'well done'").=trans("'" => q"\\\'" );# OUTPUT: «\well done\»
可能存在使用split或许多其他方法(包括subst
)的解决方法。原则上,第一个实际上产生\'
,这就是我一直在寻找的东西。也许将景观翻倍会有所帮助?
答案 0 :(得分:5)
我猜这是trans
的陷阱,但是您实际上需要指定一个“从”列表和“到”列表,否则它将仅将左侧解释为要翻译的一系列字素进入其他字素范围:
say "'well done'".trans("abcde" => "vwxyz" ); # OUTPUT: 'wzll yonz'
如果创建一个字符串列表以将一个字符串转换为另一个字符串,则会得到所需的结果:
say "'well done'".trans(["'"] => ["\\'"] ) # OUTPUT: \'well done\'