0
我試圖生成一個多維散列,其中包含與該密鑰關聯的一個密鑰和兩個值。這是我的樣本輸入文件生成一個多維散列,其中包含一個密鑰和與該密鑰相關聯的兩個值
layer_def A1 10001;
layer_map 2 -datatype 2 10001;
layer_def A2 10002;
layer_map 3 -datatype 2 10002;
我想與第二線(即10001與10001)的最後一個元素(第3模式),第一行的最後一個元素(第2模式)比較,如果它們相等,則從第二行挑選第一行的第一個模式和第一個模式,並將它們推入散列,其鍵將是第一行的Ist模式,並且值將是第一行&第二行從第二行開始。而後來想用這個哈希生成的輸出格式類似
預期樣品輸出
A1 = layer(2 type(2))
A2 = layer(3 type(2))
我試着用下面的示例代碼,但看起來,我們不能將多值一個鍵。
sample perl code..
#!/usr/bin/perl -w
use strict();
my $inFile = shift @ARGV;
my %cdnsInt=();
my %layerInfo=();
my %outHash=();
open layerMap, $inFile or die "can't read $inFile \n";
while(my $line = <layerMap>) {
if($line =~ /^\s*layer_map\s+(\S+)\s+-datatype\s+(\S+)\s+(\S+)\s*;/gi) {
%layerInfo = ($3 => [$1, $2]);
} elsif($line =~ /^\s*layer_def\s+(\S+)\s+(\S+)\s*;/gi) {
$cdnsInt{$2}=$1;
}
}
for (keys %layerInfo) {
for my $tmp (keys %cdnsInt) {
if ($_ eq $tmp) {
push @{ $outHash{values %cdnsInt} }, (values %layerInfo);
}
}
}
請問有人可以幫我解決這個問題嗎?
非常感謝。
問候, Divesh
非常感謝woolstar。我如何從outHash中檢索值? – user3093942
'$ outHash {'A1'} [0]'&'$ outHash {'A1'} [1]' – woolstar