2011-04-22 102 views
2

我对Perl很新,所以请原谅我可能会变成最明显的答案。Perl:将Unicode字符串传递给chr()

我试图将Unicode标记传递给chr()函数。 下面是我的脚本的编辑示例。

#!/usr/bin/perl 
$unicode = "/u0026amp;"; 
print chr("0x".substr($unicode, 4, 2))."\n"; 

这正常提取从$ unicode的变量。 然而,我能说的问题是chr()函数不喜欢带引号的字符串,但是如果我删除引号x in 0x被删除并成为无效的026而不是有效的0x26。

无论如何,这真的可以解决。我如何才能让X在

chr("0x".substr($unicode, 4, 2)) 

的消失,并与ordhex发送适当的值为0x26

回答

3

您不要使用与chr“0X”字符串,该方式就可以了。所以你想:

chr(hex($hexstring)) 
+0

非常感谢!这是现货。我仍然不确定为什么直接使用0x26工作,但不通过传递或串联。编辑:我应该提到我的最终解决方案是:chr(十六进制(substr($ unicode,4,2))) – Aurelius 2011-04-22 17:05:10

+0

@Aurelius:因为数字文字的规则,如0x26或046或0b100110或186_242不是用于转换的规则字符串转换为数字,这些数字只有更严格和小数。 – tchrist 2011-04-22 17:18:41

+0

啊,谢谢你清理那个。再次感谢您的帮助。 – Aurelius 2011-04-22 17:22:31