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);