sorting - Perl 以特殊方式对 Alpha 字符进行排序

标签 sorting perl

我知道这个问题可能已经被问了一百万次,但我很难过。我有一个要排序的数组。我想得到的结果是

A
B
Z
AA
BB
可用的排序例程不会以这种方式排序。我不确定是否可以做到。这是我的 perl 脚本和我正在做的排序。我错过了什么?
# header
use warnings;
use strict;
use Sort::Versions;
use Sort::Naturally 'nsort';

print "Perl Starting ... \n\n"; 

my @testArray = ("Z", "A", "AA", "B", "AB");

#sort1
my @sortedArray1 = sort @testArray;
print "\nMethod1\n";
print join("\n",@sortedArray1),"\n";


my @sortedArray2 = nsort @testArray;
print "\nMethod2\n";
print join("\n",@sortedArray2),"\n";


my @sortedArray3 = sort { versioncmp($a,$b) }  @testArray;
print "\nMethod3\n";
print join("\n",@sortedArray3),"\n";


print "\nPerl End ... \n\n"; 

1;
输出:
Perl Starting ...


Method1
A
AA
AB
B
Z

Method2
A
AA
AB
B
Z

Method3
A
AA
AB
B
Z

Perl End ...

最佳答案

我认为你想要的是按长度排序,然后按序数排序。这很容易管理:

my @sortedArray = sort {
    length $a <=> length $b ||
    $a cmp $b
} @testArray;
这与英语完全一样:根据 a 与 b 的长度排序,然后按 a 与 b 进行比较。

关于sorting - Perl 以特殊方式对 Alpha 字符进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67878256/

相关文章:

linux - Perl 检查网络接口(interface)是否启动(linux)

list - 检查列表是否已排序的常规方法

javascript - 数据表数字排序问题

perl - 命令行 "sort | uniq -c | sort -n"的替代方案

python - 对 laspy 创建的 numpy 数组进行排序

perl - 如何删除与 Perl 中某个模式匹配的行?

perl - 如何创建数据结构的可重复签名?

C++合并排序不会合并?

perl - 在perl中从csv文件中删除多余的逗号

perl - 如何获得 __LINE__ 调用函数?