Hey Cristoforo, I implemented your solution (without the strikethroughs :)) and it worked like a dream and creates some flexibility for future extensions. I will look into implementing the other solution as I have time. But thanks again!
print "doing the set scalar stuff\n";
use Set::Scalar;
%output;
$ridxre = Set::Scalar->new(keys %ridxre);
$ridrdk = Set::Scalar->new(keys %ridrdk);
$ridbid = Set::Scalar->new(keys %ridbid);
$intersect = $ridxre * $ridrdk * $ridbid;
for $key (@$intersect) {
push @{$output{$key}}, $ridxre{$key}, $ridrdk{$key}, $ridbid{$key}
+;
}
print "writing OUT.txt file\n";
open(OUT,">","$outfile1") || die("cannot open $outfile1\n");
while ( ($k,$v) = each %output ) {
print OUT "$k ";
print OUT "$_ " for @{ $output{$k} };
print OUT "\n";
}
close(OUT);