【发布时间】:2020-11-10 02:05:30
【问题描述】:
我有一个数组哈希(perl),其键是一个由制表符连接的字符串。 这就是哈希键的样子
chr"\t"fivep"\t"threep"\t"strand # separated on tab
如果哈希被命名为%output
我想对这个散列的键进行排序,这样首先对 chr 进行排序,然后在 Fivep 上进行排序,然后在 threep 上进行排序。
我尝试了以下代码进行排序:
foreach my $k(sort keys %output){
print join("\t",$k,@{$output{$k}}),"\n";
}
这仅对 chr 进行排序,但我想在其后排序 5p,然后再排序 3p。
我该怎么做?
【问题讨论】:
-
不是一个完全成熟的解决方案,但是当我尝试对类似数据进行排序时,我发现
Sort::Versions非常方便并且能够轻松地对这些类型的字符串进行排序。我通常会用它来排序像chr1:12345:T>A这样的东西,它处理得很好。先尝试一下可能很简单? -
您是否考虑在填充哈希时更改密钥本身?然后,您的代码将按原样运行。
-
是的,我有。可能是这样的数组散列
@{$output{$chr}->{$fivep}->{$threep}->{$strand}}。然后使用 foreach 循环打印输出。效果很好。