传入文件的格式为account:data。在本例中,数据为Y-SNP。
我想按值(SNPs)排序,并返回带有数据的键(帐户),这样我就可以保持两者的关联,这只打印数据,而对第二个字段进行常规数组排序也不起作用。
#!/usr/bin/perl
@lines = <STDIN>;
chomp @lines;
foreach (@lines)
{
(@f) = split /:/,$_;
$h{$f[0]} = $f[1];
}
@s = map { [ $_, $h{$_} ] } sort values %h;
foreach (@s) {print "@$_\n"}
1条答案
按热度按时间qaxu7uf21#
如果你想按值对一个哈希值进行排序,但要得到相关的键,你可以用一个自定义的排序函数来实现,比如:
这将返回
%h
中键的值的顺序,在本例中是按数字顺序<=>
排序。如果要按字母顺序排序,请使用cmp
。有关更多信息,请参见documentation of sort,其中甚至有一个类似的示例: