使用trans翻译单引号

时间:2018-10-06 18:50:57

标签: escaping perl6 quoting

我找不到将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)的解决方法。原则上,第一个实际上产生\',这就是我一直在寻找的东西。也许将景观翻倍会有所帮助?

1 个答案:

答案 0 :(得分:5)

我猜这是trans的陷阱,但是您实际上需要指定一个“从”列表和“到”列表,否则它将仅将左侧解释为要翻译的一系列字素进入其他字素范围:

say "'well done'".trans("abcde" => "vwxyz" );  # OUTPUT: 'wzll yonz'

如果创建一个字符串列表以将一个字符串转换为另一个字符串,则会得到所需的结果:

say "'well done'".trans(["'"] => ["\\'"] )  # OUTPUT: \'well done\'