So this is the script so far:
#!/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";
- 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 |