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

最佳答案

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

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

如果创建一个字符串列表以将一个字符串转换为另一个字符串,则会得到所需的结果:
say "'well done'".trans(["'"] => ["\\'"] )  # OUTPUT: \'well done\'

10-07 14:59