Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何转换U+;XXXXX序列到perl中的字符?_Perl - Fatal编程技术网

如何转换U+;XXXXX序列到perl中的字符?

如何转换U+;XXXXX序列到perl中的字符?,perl,Perl,这个 印刷品 perl -CO -E 'say "\N{U+00E1}"' 如何实现与以下相同的目标: á 使用: 如果可以控制输入内容,也可以使用eval: echo "U+00E1" | perl -Mcharnames=short -CO -lnE 'say charnames::vianame($_)' 纯基本Perl解决方案: echo "U+00E1" | perl -CO -lnE 'eval "\$a=\"\\N{$_}\";"; say $a;' 请不要使用不安全的(e

这个

印刷品

perl -CO -E 'say "\N{U+00E1}"'
如何实现与以下相同的目标:

á
使用:

如果可以控制输入内容,也可以使用
eval

echo "U+00E1" | perl -Mcharnames=short -CO -lnE 'say charnames::vianame($_)'

纯基本Perl解决方案:

echo "U+00E1" | perl -CO -lnE 'eval "\$a=\"\\N{$_}\";"; say $a;'
请不要使用不安全的(
eval
)解决方案,如:

echo "U+00E1" | perl -C -nE 'say chr(hex) if s/U\+//'

使用
pack

echo "U+00E1" | perl -C -nE 's/U\+/0x/;eval qq{say chr($_)}'
输出
塔克斯。在4分钟内接受:)使用
-l
,您不需要
-E
say
。Echo命令还可以生成UTF-8:
Echo-E'\UE1'\124; perl-CSA-nE'print$
包一样,但老实说,仍然不了解包的工作原理。@kobame:
pack
包很不错,但返回的不是“aa”.是的,看不出有什么问题。现在已经修好了。我仍然得到不同的输出。检查
xxd
$echo“U+00E1”| perl-C-nE的/U\+/0x/;评估qq{say chr($)}xxd 00000000:c3a1 0a…$回显“U+00E1”| perl-C-nE'如果s/U\+/'| xxd 00000000:c3a1 0a…$echo“U+00E1”| perl-Mcharnames=short-CO-lnE'say charnames::vianame($|)| xxd 00000000:c3a1 0a
如果对代码进行一些解释,这个答案会更好。
echo "U+00E1" | perl -C -nE 'say chr(hex) if s/U\+//'
echo "U+00E1" | perl -C -nE 's/U\+/0x/;eval qq{say chr($_)}'
echo U+0041 U+0042 U+0043 U+00E1 | perl -ne"print pack 'U', hex for /\p{hex}+/g"
ABCá