我从Perl开始,并在给定十六进制字符串变量的情况下如何呈现unicode字符感到困惑。
#!/usr/bin/perl
use warnings;
foreach my $i (0..10000) {
my $hex = sprintf("%X", $i);
print("unicode of $i is \x{$hex}\n");
}
print("\x{2620}\n");
print("\x{BEEF}\n");
给我警告:Illegal hexadecimal digit '$' ignored at perl.pl line 9.
\x{$hex}
不会显示任何值
答案 0 :(得分:8)
chr($num)
和pack('W', $num)
都产生一个由具有指定值的单个字符组成的字符串,就像"\x{XXXX}"
一样。
这样,您可以使用
print("unicode of $i is ".chr(hex($hex))."\n");
或者只是
print("unicode of $i is ".chr($i)."\n");
请注意,如果没有该程序,则毫无意义
use open ':std', ':encoding(UTF-8)';
答案 1 :(得分:4)
是的。你不能那样做。像这样\\中间不允许变量插值。您可以使用chr()来获取该字符。
答案 2 :(得分:1)
Randal's answer是正确的。有关更多信息,您可能需要阅读perluniintro。
从那里,您可以找到例如:
在运行时,您可以使用:
use charnames ();
my $hebrew_alef_from_name
= charnames::string_vianame("HEBREW LETTER ALEF");
my $hebrew_alef_from_code_point = charnames::string_vianame("U+05D0");