Perl中的排序命令 - 有人可以解释这个脚本中发生了什么吗?

时间:2018-06-14 15:17:29

标签: perl sorting

这里的新编码员在Perl工作。有人可以向我解释下面代码的以下部分是做什么的吗?我知道它在数组@animals中执行按字母顺序排列的元素,我认为然后将排序的索引值分配给@idx。我不知道最后一部分" 0 .. $#animals;"是在做。似乎' ..'是Perl中的范围运算符。

my @idx = sort { 
$animals[$a] cmp $animals[$b] 
} 0 .. $#animals;

以下是完整代码:

@animals = (dog,cat,iguana,parakeet,monkey, giraffe);
@diets = (beef,chicken,chickpeas,seeds,bananna,tree);
@age = (7,3,5,2,20,18);

my @idx = sort { 
$animals[$a] cmp $animals[$b] 
} 0 .. $#animals;

@animals = @animals[@idx];
@diets = @diets[@idx];
@age = @age[@idx];

print "@animals\n";
print "@diets\n";
print "@age\n";

1 个答案:

答案 0 :(得分:4)

$#animals@animals中最后一个条目的索引;在你的例子中,那是5

范围运算符接受0 .. 5并将其展开为0, 1, 2, 3, 4, 5

整数列表被传递给sort@animals将它们视为{ "Results": [ { "FirstName": "John", "LastName": "Doe" }, { "FirstName": "Mary", "LastName": "Joe" }, { "FirstName": "Thomas", "LastName": "Edison" } ] } 的索引,并根据该数组中的值对它们进行排序。

顺便提一下,并行数组非常适合其他一些结构,比如哈希引用数组。

相关问题