Perl哈希用法

Perl哈希用法,perl,hash,Perl,Hash,我正在尝试从以下示例文件创建哈希: 示例文件: #NewName OldName Axc.Sx2.1_Axc.Wx2.1 1BDER Axc.Sx2.1_Axc.Wx2.1 1ADER Axc.Wxx.5 1DDER 散列的键应该是newName,值应该是oldname。以下代码适用于文件中唯一的行: while (<$mapF>) { chomp $_; next if /^\s*(#.*)?$/; ne

我正在尝试从以下示例文件创建哈希:

示例文件:

#NewName              OldName
Axc.Sx2.1_Axc.Wx2.1  1BDER
Axc.Sx2.1_Axc.Wx2.1  1ADER
Axc.Wxx.5            1DDER
散列的键应该是newName,值应该是oldname。以下代码适用于文件中唯一的行:

while (<$mapF>) {
    chomp $_;
    next if /^\s*(#.*)?$/;
    next if /^\s+.*$/;
    ##latestRuleName OldRuleName
    if ( $_ =~ /(\S+)\s+(\S+)/gi ) {
        # create list and apped $2
        $mapHash{$1} = $2;
    }
}

foreach ( keys %mapHash ) {
    print "$_\n";
}

是否有办法获取mapHash中的所有三个条目?

哈希中的键必须是唯一的。但是,您可以为每个键存储多个值,这称为数组哈希或HoA。这意味着数组引用存储在每个键上:

push @{ $mapHash{$1} }, $2;

您还可以使用CPAN模块,它每个键存储多个值

,非常感谢choroba。现在如何访问这些数组的哈希值?@develhrastogi:$maphhash{key}将是一个数组引用,因此您可以使用$maphhash{key}[0]等为其下标,或者取消引用它以获得完整数组:@{$maphhash{key}。非常感谢Choroba:现在一切都好了:非常感谢Miguel Prz指向CPAN:模块。我以后一定会用的。
push @{ $mapHash{$1} }, $2;