我正在为 IRC 编写脚本,有时我可能需要使用颜色。通常我这样做:
my $C = chr(3);
$C
是用于颜色的控制代码,但我见过一些其他脚本可以转义它,例如“\x ...”。我如何获得正确的编码版本?我尝试过Data::Dumper
,但没找到。
用十六进制转义码指定
chr(3)
的方法是使用:
print "\x03\n";
或者,八进制:
print "\003\n";
或者,作为控制代码:
print "\cC\n";
参见 perldoc perlop:
以下转义序列可用于插值和音译的构造中。
选项卡(HT、TAB)\t
换行符 (NL)\n
返回(CR)\r
换页 (FF)\f
退格键(BS)\b
警报(铃)(BEL)\a
逃脱(ESC)\e
八进制字符(示例:ESC)\033
十六进制字符(示例:ESC)\x1b
宽十六进制字符(示例:SMILEY)\x{263a}
控制字符(例如:ESC)\c[
命名的Unicode字符\N{name}
代码在 0 .. 255 范围内的字符可以用多种方式表示。这些示例都打印字符
A
:
print chr(65);
print "\101"; # octal notation
print "\x41"; # hexidecimal notation (and hexadecimal notation)
printf "%c",65;
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";
您可以通过多种机制打印十六进制编码(甚至八进制或二进制编码)字符(无论如何这都不是完整的列表):
# generate strings from hex:
my $space_char = sprintf("%x", 0x20);
my $space_char2 = "\x20";
my $space_char3 = 0x20;
my $space_char4 = pack("L", 0x20);
my $space_char5 = chr(0x20);
您可以在 perldoc perlfunc 或通过 perldoc -f sprintf、perldoc -f pack、perldoc -f chr 等单独阅读这些函数。
有关十六进制、八进制和二进制数的更多信息,请参阅 perldoc perldata 下的“标量值构造函数”。