2011-04-22 95 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