Tem*_*jin 3 sorting perl alphabetical
我正在尝试修复亚美尼亚字母表中的排序,因为所有标准的Unix工具和编程语言只对两种主要方言中的一种(西方)排序字母和单词.
把它翻译成技术问题就是重新命令其中一个字符" ւ ",把它放在字母之间的不同位置,让我们说它是最后一个字符,以便为顺序方言(东方)正确排序单词.在语言上用东方方言来说,这个" ւ "符号不是"独立的",而是用2个字符" ու " 写的字母的一部分.目前的排序将字母" ու " 置于"ոք"或"ոփ"2字母构造之后.
基本上,如果你想让例如字母"v"代替拉丁字母表中的字母"z",它应该是完全相似的.
我想尝试使用类似的东西
#!/usr/bin/perl -w
use strict;
my (@sortd, @unsortd, $char_u, $char_x);
#@unsortd = qw(????? ????? ??????? ???? ????? ????? ???);
@unsortd = qw(?? ?? ?? ??);
@sortd = sort {
$char_u = "?";
$char_x = split(//, @unsortd);
if ($char_u gt $char_x) {
1;
} else {
return $a cmp $b;
}
} @unsortd;
print "@sortd\n";
Run Code Online (Sandbox Code Playgroud)
但这并不是整个单词的缩放,只有2个字母的形式是固定的.
更新:我能够使用tr函数解决这个问题,将字母映射到数字,如Perlmonks所示
Mat*_*Mat 12
如果你还没有这样做,你应该看一下Unicode :: Collate :: Locale模块.
use Unicode::Collate::Locale;
my $collator = Unicode::Collate::Locale->new(locale => "hy");
@sortd = $collator->sort(@unsortd);
print join("\n", @sortd, '');
Run Code Online (Sandbox Code Playgroud)
这打印:
??
??
??
??
Run Code Online (Sandbox Code Playgroud)
(我不确定这是你期望的输出,但是该模块并且Unicode::Collate有很多信息,根据需要创建自定义排序可能更容易,而不是自己编辑.)