在perl中对数组进行排序

shi*_*juo 0 sorting perl

我在perl中有一个数组,其中包含大约200个用于csv文件的索引.它喜欢以下几行:

46.9234784633993,Springwood Drive,Naples,FL
89.7786182217159,W 8th St,Lakeland,FL
Run Code Online (Sandbox Code Playgroud)

我想在第一个逗号之前按那个数字对它们进行排序.我尝试使用只是排序,但有时数字会变成数百和数千,它只是对1中的所有数字进行排序.然后数字排序不喜欢它,因为它们不是数字条目

我试过这个

my @sortedDistances = sort{ $a <=> $b }(@completedDistances);
and
my @sortedDistances = sort(@completedDistances);
Run Code Online (Sandbox Code Playgroud)

Sim*_*ier 5

这是一个可能的解决方案,尝试它是否有效:

open FILE, "<", $ARGV[0] or die $!;
my @sorted =
    map { join ",", @{$_} }
    sort { $a->[0] <=> $b->[0] }
    map { [ split /,/ ] } <FILE>;
close FILE;
say join "\n", @sorted;
Run Code Online (Sandbox Code Playgroud)

编辑:将冒号改为逗号

  • 这实际上是正确的答案.值得注意的是,使用诸如`split /,/,$ _,2`(带第三个参数)之类的东西更有效,因为它限制了执行的正则表达式匹配的数量.(另外,扼杀然后加入换行是很搞笑的;`print @ sorted`也应该有用) (3认同)