perl - 制作散列的散列

标签 perl design-patterns hash

我有一个包含不同行的文件,每一行都有一个重复的模式。我需要一个适当的数据结构来解析我的文件,例如:

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/

相关文章:

perl - 如何确保 Perl 脚本适用于旧版本?

perl - 在 Moose 中,如何对 arrayref setter 进行 uniq?

perl - 在 XS 中创建线程回调

ruby - => 和 : in Ruby? 是什么

sql-server - SQL Server 中的数据仓库 2.0

xml - 使用 LibXML 和 XPath 查找带冒号的节点(本地命名空间)

java - 原型(prototype)设计模式和简单的 Java 克隆之间的区别

java - 将哪些方法实现到 "correct"DAO 类中?

java - 从父类访问子类是否被视为反模式

hash - 可以使用 CRC32C 作为基础构造一个 "good"哈希函数吗?