Perl - 如何转义/编码特殊字符

som*_*ody 4 perl

我正在为IRC编写脚本,有时我可能需要使用颜色.通常我会这样做

my $C = chr(3);
Run Code Online (Sandbox Code Playgroud)

$C是用于颜色的控制代码,但我看到一些其他脚本逃脱它像"\ x\v ...".我如何获得正确的编码版本?我试过Data::Dumper但我找不到它.我希望这个问题有道理.

mob*_*mob 5

代码范围为0 ... 255的字符可以用多种方式表示.这些例子都打印了这个字符A:

print chr(65);
print "\101";     # octal notation
print "\x41";     # hexidecimal notation (and hexadecimal notation)
printf "%c",65;
Run Code Online (Sandbox Code Playgroud)


或者针对您的特定问题:

print chr(3);
print "\003";
print "\3";
print "\x03";     # hexidecimal notation (and hexadecimal notation)
printf "%c",3;
print "\cc";      # from Sinan's answer
print "\cC";
Run Code Online (Sandbox Code Playgroud)


Sin*_*nür 5

chr(3)使用十六进制转义码指定的方法是使用:

print "\x03\n";
Run Code Online (Sandbox Code Playgroud)

或者,八进制:

print "\003\n";
Run Code Online (Sandbox Code Playgroud)

或者,作为控制代码:

print "\cC\n";
Run Code Online (Sandbox Code Playgroud)

perldoc perlop:

以下转义序列可用于插值和音译的构造.

  1. \t 标签(HT,TAB)
  2. \n 换行(NL)
  3. \r 返回(CR)
  4. \f 换页(FF)
  5. \b 退格(BS)
  6. \a 闹钟(铃)(BEL)
  7. \e 逃生(ESC)
  8. \033 八进制字符(例如:ESC)
  9. \x1b 十六进制字符(例如:ESC)
  10. \x{263a} 宽十六进制字符(例如:SMILEY)
  11. \c[ 控制字符(例如:ESC)
  12. \N{name} 命名Unicode字符

  • perlop得到!我检查了perlsyn,perldata和perlintro寻找这个. (2认同)