使用trans翻译单引号

jjm*_*elo 7 escaping quoting perl6

我找不到使用trans单引号转换为转义单引号的方法:

say ($ = "'well done'").=trans("'" => "\\\'" ) ;# OUTPUT: «\well done\?»
say ($ = "'well done'").=trans(<'> => Q [\'] ) ;# OUTPUT: «\well done\?»
say ($ = "'well done'").=trans("'" => q"\\\'" );# OUTPUT: «\well done\?»
Run Code Online (Sandbox Code Playgroud)

可能有使用拆分或任何其他东西的解决方法,包括subst.原则上,第一个实际产生\',这是我一直在寻找的.也许翻倍的景观会有所帮助吗?

Eli*_*sen 5

我想这是一个疑难杂症trans,但实际上你需要"从"列表中指定一个和"到"列表中,否则将只是解释左侧为一个范围字形的被翻译成其他范围字形的:

say "'well done'".trans("abcde" => "vwxyz" );  # OUTPUT: 'wzll yonz'
Run Code Online (Sandbox Code Playgroud)

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

say "'well done'".trans(["'"] => ["\\'"] )  # OUTPUT: \'well done\'
Run Code Online (Sandbox Code Playgroud)