2012-10-31 100 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