按名称

时间:2016-04-15 12:29:18

标签: perl unicode

Perl可以很方便地获得一些符号。

$ perl -CO -E 'say "\N{FAMILY}"'

有没有办法通过插值用"\N{}"来评估符号?类似于:

perl -CO -E 'my $what = "FAMILY"; say "\N{$what}"'

(这不起作用,但给你的味道)。

除了可行性之外,这种评估还有任何缺点或可能的威胁吗?例如。假设$what字符串是用户定义的,我永远不会eval $what。我会\N{$what}安全吗?

行动...

在得到答案后,我注意到perlunicook中如何清楚地说明这些信息。抱歉缺少RTFM。我想无论如何这对stackoverflow来说都是件好事。

2 个答案:

答案 0 :(得分:10)

使用charnames中的vianame功能:

perl -CO -Mcharnames=:full -wE 'say chr charnames::vianame("PILE OF POO")'

答案 1 :(得分:4)

use charnames ();
my $what = "FAMILY";
say charnames::string_vianame($what);