按名称获取Unicode代码点("字符")

Dac*_*cav 4 unicode perl

Perl使获得一些符号变得非常方便.

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

Run Code Online (Sandbox Code Playgroud)

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

perl -CO -E 'my $what = "FAMILY"; say "\N{$what}"'
Run Code Online (Sandbox Code Playgroud)

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

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

行动...

得到答案后,我注意到这些信息是如何明确说明的perlunicook.抱歉缺少RTFM.我想无论如何这对stackoverflow来说是件好事.

cho*_*oba 10

使用charnames中vianame函数:

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

Run Code Online (Sandbox Code Playgroud)

  • 有趣的选择例子. (5认同)

yst*_*sth 5

use charnames ();
my $what = "FAMILY";
say charnames::string_vianame($what);
Run Code Online (Sandbox Code Playgroud)