in reply to Re^3: Hash w/ multiple values + merging
in thread Hash w/ multiple values + merging
- It reads into hash correctly - It finds the duplicates and update the value array for duplicate keys - but it does not get rid of the unmatched keys and their values#!/usr/local/bin/perl use strict; use warnings; use Data::Dumper; my ($key,$val); open (FH1, "$ARGV[0]")or die("Error opening File1 $!\n"); my %hash1; while(<FH1>){ next if /(sample|value\d)/; my ($key, $val1, $val2)= split /\s+/; push @{$hash1{$key}}, ($val1, $val2); } close FH1; open(FH2, "$ARGV[1]")or die("Error opening File1 $!\n"); my %hash2; while(<FH2>){ next if /(sample|value\d)/; my($key, $val3)=split /\s+/; $hash2{$key}=$val3; } close FH2; my %hash3 = %hash1; foreach my $key2 ( keys %hash2 ) { if( exists $hash3{$key2} ) { push @{$hash3{$key2}}, ($hash2{$key2}); } else { delete $hash3{$key}; } } print Data::Dumper->Dump([\%hash1],['FIRST HASH']),"\n"; print Data::Dumper->Dump([\%hash2],['SECOND HASH']),"\n"; print Data::Dumper->Dump([\%hash3],['MERGED HASH']),"\n";
|
|---|