2012-10-31 144 views
1

我很困惑的pericode和Unicode在Perl中。Perl unicode哈希鍵查找

我從MySQL數據庫得到了這個散列。

my $hashFromDB = { "Ves\x{101}kha" => "some value" }; 

但我只知道,在這種形式符號

my $key = "Ves\u0101kha"; 

的關鍵我怎麼可以轉換爲\ uXXXX記號到\ X {XXX},這樣我可以用鑰匙將其值。

謝謝。

回答

3

\x{}在Perl中轉義幾乎完全像在JS中跳轉到\u一樣。您只需使用代碼裏面{},完全按照你的第一個片段:

my $key = "Ves\x{101}kha"; 
my $value = $hashFromDB->{$key}; 

如果您有文字串與\u在裏面,我以爲意爲「\ u加上4個十六進制數字形成碼點號」,只是與正則表達式預處理它會用相同的代碼真正的字符替換這樣的序列:

$key =~ s/\\u([a-fA-F0-9]{4})/chr(hex($1))/ge; 

BTW,\u有在Perl不同的意義 - 它upercases下一個符號。你可以check complete list of escapes in documentation

+0

嗨,感謝您的回覆,但如果我知道密鑰爲「Ves \'kha」我已經沒有問題了。但我只知道在\ uXXXX中,所以唯一的方法是使用正則表達式將其轉換爲\ x {}?如果是這樣,有一個庫/內置函數來做到這一點?謝謝 – William

+0

@William,更新了合適的預處理。 –

+0

謝謝,現在我明白了:) – William