使用 trans 翻译单引号

Translating single quote using trans

我找不到将使用 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\'