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;