我有一个包含不同行的文件,每一行都有一个重复的模式。我需要一个适当的数据结构来解析我的文件,例如:
cluster1:gene1(genome1) gene2(genome2) gene3(genome3)
cluster2:gene4(genome4) gene5(genome5)
名称是任意的,可以是任何东西。
我想到了一个哈希数据结构的哈希
%hoh=("cluster1" => {
"gene1"=>"genome1"
"gene2"=>"genome2"
"gene2"=>"genome2"
}, "cluster2" => {
"gene4"=>"genome4"
"gene5"=>"genome5"
}
)
我有两个问题: 第一:如何在每一行中查找重复模式?
其次,如何对hash进行hash?
编辑:根据 Zaid 的要求发布
#!/usr/bin/perl -w
use strict; use warnings;
my %HoH;
while(<DATA>){
my $line=$_;
chomp($line);
my ( $cluster, $genes ) = split (/:/,$line);
$HoH{ $cluster } = { split/[( )]+/ , $genes };
}
foreach $cluster (keys %HoH){
print "$cluster: ";
foreach $genes (keys %{$HoH{$cluster}}){
print "$genes = $HoH{$cluster}{$genes} ";
}
print "\n";
}
__DATA__
cluster1:gene1(genome1) gene2(genome2) gene3(genome3)
cluster2:gene4(genome4) gene5(genome5)
最佳答案
OP 发布他们的尝试时要遵循的解释:
my %HoH;
while (<>) {
chomp;
my ( $cluster, $genes ) = split /:/;
$HoH{ $cluster } = { split /[( )]+/, $genes };
}
关于perl - 制作散列的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12183124/