#!/usr/bin/perl;
use strict;
use warnings;
my $filename1 = 'file1.txt';
my $filename2 = 'file2.txt';
my $filename3 = 'file3.txt';
#Build a hash of arrays from file2
my %uniprot_families;
open my $fh, '<', $filename2 or die "Failed to open $filename2: $!";
while (my $rec = <$fh>){
chomp($rec);
my ($id, $family) = split(/\s+/, $rec);
$uniprot_families{$id} = [] if not exists $uniprot_families{$id};
push $uniprot_families{$id}, $family;
}
close $fh;
#open your other input file
open $fh, '<', $filename1 or die "Failed to open $filename1: $!";
#open your output file
open my $fh_out, '>', $filename3 or die "Failed to open $filename3: $!";
while (my $id = <$fh>){
chomp($id);
my $families;
if (exists $uniprot_families{$id}){
$families = join(',', @{$uniprot_families{$id}});
}
else{
$families = 'None';
}
print $fh_out "$id\t$families\n";
}
close $fh; d5e5
Practically a Posting Shark
810 posts since Sep 2009
Reputation Points: 159
Solved Threads: 159