print $activ{E7F888},"\n"; for ( read_file $uniprot ) { next unless /(E7F888)\s+.+=([^\s]+)/; say; push @activline, "$1 | $2 | $activ{$1} \n" if $activ{$1}; } print @activline; } print @activline; #### PF01388 E7F888 Name=arid5b ;PF01388 E7F888 | arid5b | PF01388 #### #!/usr/bin/perl use Modern::Perl; use File::Slurp qw/read_file write_file/; my $uniprot = 'uniprot-sfinal.txt'; my $activin = 'Activator-PFAM.txt'; my %activ = map { s/\.\d+//g; /(.+)\s+\|\s+(.+)/ and $1=>$2; } grep/\|\s+\S+/,read_file $activin; for ( read_file $uniprot ) { next unless /(.{6})\s+.+=([^\s]+)/; print $1,"\n" if $activ{$1}; } print "done"; #### $uniprot: Q801F8 Q90XZ5; Q90XZ8;Name=dmrt1 B7ZS42 A4PBN7; B7ZS44;Name=dmrt1-b ;PF00751;PF12374 Q157S1 Name=Crtc1 Synonyms=Mect1, $activ: Q801F8 | PF00751.13 PF12374.3 PF12374.3 B7ZS42 | PF00751.13 PF12374.3 PF12374.3 Q157S1 | PF12886.2 PF12885.2 PF12884.2