对于Python的前缀r"text",Perl的通讯员字符串文字?

Léo*_* 준영 8 python string perl literals

线程是关于Python的字符串字面量r,而这大约是Perl的一个位置.但是,我不确定在Perl中是否存在任何与Python前缀相同的命令r.

如何在Perl的字符串文字中替换等效的Python前缀?

mob*_*mob 7

q{}插入的报价运算符将帮助您完成大部分工作.只有几个微妙的差异.

  1. 分隔符

    Python原始字符串文字使用了四个分隔符:

    • r"..."r'...'
    • r"""..."""r'''...'''

    q...Perl中的运算符具有更多种分隔符

    • 成对分隔符 q(...),q[...],q<...>,q{...}
    • 定期定界符可以是任何其它非字母数字,7位ASCII字符:q"...",q/.../,q#...#,等.
  2. 反斜杠

    反斜杠字符\始终被解释为Python原始文字字符串中的文字反斜杠字符.这将逃脱,否则将被解释为字符串的结束分隔符字符

    r'Can\'t believe it\'s not butter'   =>   Can\'t believe it\'s not butter
    
    Run Code Online (Sandbox Code Playgroud)

    \Perl q{...}表达式中的反斜杠字符也是一个字面反斜杠,但有两个例外:

    • 反斜杠在分隔符前面

      q<18 \> 17 \< 19>     =>   18 > 17 < 19
      q#We're \#1#          =>   We're #1
      
      Run Code Online (Sandbox Code Playgroud)
    • 反斜杠前面是另一个反斜杠字符.在这种情况下,两个反斜杠字符的序列被解释为单个反斜杠.

      q[single \ backslash]           =>  single \ backslash
      q[also a single \\ backslash]   =>  single \ backslash
      q[double \\\ backslash]         =>  double \\ backslash
      q[double \\\\ backslash]        =>  double \\ backslash
      
      Run Code Online (Sandbox Code Playgroud)

有一种方法可以在Perl中创建一个真正的"原始"字符串:单引号here-doc.

my $string = <<'EOS';
'"\\foo
EOS 
Run Code Online (Sandbox Code Playgroud)

这会创建字符串.'"\\fooNEWLINE

(那么是否可以在Python中创建包含'''"""?的单个原始字符串文字)

  • 添加了最真实的原始Perl. (2认同)
  • heredoc字符串总是以换行符结尾 (2认同)