Perl多语言排序:需要空格对字母进行排序吗

Perl多语言排序:需要空格对字母进行排序吗,perl,unicode,multilingual,Perl,Unicode,Multilingual,我有一个Perl脚本,它对单词列表进行排序,使用utf-8编码: use HTML::Entities; use Unicode::Collate::Locale; use utf8; my @array = ( "Another", "An Other", "Anóther", "An Óther", "Anòther", "An Òther", "Anôther", "An Ôther",

我有一个Perl脚本,它对单词列表进行排序,使用utf-8编码:

use HTML::Entities;
use Unicode::Collate::Locale;
use utf8;

my @array = (
     "Another", 
     "An Other", 
     "Anóther", 
     "An Óther", 
     "Anòther", 
     "An Òther", 
     "Anôther", 
     "An Ôther", 
     "Anöther", 
     "An Öther", 
     "Anõther", 
     "An Õther"
     );

my $lang = "da";

printf ("Lang code is: %s\n", $lang);

my $coll = Unicode::Collate::Locale->new(locale => "$lang");

my @result = $coll->sort(@array);


foreach my $item (@result){

print $item, "\n";
}
以下是它的输出:

Lang code is: da
An Other
Another
An Óther
Anóther
An Òther
Anòther
An Ôther
Anôther
An Õther
Anõther
An Öther
Anöther
但是,我希望它能够输出:

An Other
An Óther
An Òther
An Ôther
An Õther
An Öther
Another
Anóther
Anòther
Anôther
Anõther
Anöther

理由是我希望空格字符在其他字母之前排序。有什么方法可以让我的Collator对象帮助我做到这一点吗?

尝试将变量权重设置为“不可忽略”:

my $coll = Unicode::Collate::Locale->new(
    locale   => $lang,
    variable => 'non-ignorable',
);
有关详细信息,请参阅Unicode排序算法(UCA)规范中的一节