我在尝试tr///
时注意到,即使转义了,它似乎也不翻译反斜杠。例如,
say TR"\^/v"." given 'v^/\\';
say TR"\\^/v"." given 'v^/\\';
say TR"\ ^/v"." given 'v^/\\';
所有人output ...\
而不是我所期望的....
还有一些其他奇怪的行为,例如\
似乎是only escaping lowercase letters,但是docs page并没有太多信息...反斜杠的确切行为是什么({{1 }})的音译(\
)?
答案 0 :(得分:6)
存在一个错误,该错误是由于反斜杠被吞咽而不是正确地转义tr ///语法中的内容引起的。
say TR/\\// given '\\'
===SORRY!=== Error while compiling:
Malformed replacement part; couldn't find final /
at line 2
------> <BOL>⏏<EOL>
我提出了https://github.com/rakudo/rakudo/issues/2456并提交了https://github.com/rakudo/rakudo/pull/2457来解决它。
答案的第二部分是,Perl 6在某些引用结构中非常努力,仅将\
解释为有效转义序列的转义,即\n
,\r
,{ {1}},\s
等。否则,将其保留为文字\'
。
答案 1 :(得分:3)