0

是否有一个版本charnames::viacode()将返回代码点的短名称,即use charnames ':short'在生效时可以使用的名称?

use charnames ':short';

my $x = ord("\N{Cyrillic::es}");

say "long name:  ", charnames::viacode($x); # prints "CYRILLIC SMALL LETTER ES"
say "short name: ", ???($x);                # want: Cyrillic:es
4

1 回答 1

1

charnames文件表明

SCRIPTNAME:CHARNAME

搜索

  • SCRIPTNAME CAPITAL LETTER CHARNAME(如果 CHARNAME 不是全部小写)
  • SCRIPTNAME SMALL LETTER CHARNAME(如果 CHARNAME 全部小写)
  • 脚本名称字母字符名称

所以你可以使用

sub short_name {
   my ($long_name) = @_;
   return "$1:\U$2" if $long_name =~ /^(\S+) CAPITAL LETTER (\S+)\z/;
   return "$1:\L$2" if $long_name =~ /^(\S+) SMALL LETTER (\S+)\z/;
   return "$1:$2"   if $long_name =~ /^(\S+) LETTER (\S+)\z/;
   return $long_name;
}
于 2013-01-10T23:14:26.213 回答