Q197F8 ORFNames=IIV3-002R Q197F7 ORFNames=IIV3-003L Q6GZX2 ORFNames=FV3-003R Q6GZX1 ORFNames=FV3-004R Q197F5 ORFNames=IIV3-005L Q6GZX0 ORFNames=FV3-005R ;PF02393 Q91G88 ORFNames=IIV6-006L ;PF12299;PF04383 Q6GZW9 ORFNames=FV3-006R #### Q197F8 | PF04947.9 Q91G88 | PF01486.12 PF00319.13 #### Q197F8 IIV3-002R PF04947.9 Q91G88 IIV6-006L PF01486.12 PF00319.13 #### #!/usr/bin/perl use warnings; use strict; open DATA, "C:\\Users\\Jems\\Desktop\\Perl\\test\\test.txt" or die $!; use Modern::Perl; use Data::Dump qw/dump/; our %data; my $ac; while () { my @splitted= split(/=|;/); foreach (@splitted){ if (/^(.{6})\sORFNames/) { $ac = $1; chomp ($ac); next; } if (/^(.+)\s\n/) { #print "$ac $1\n"; push @{ $data{$1} }, $ac; next; #print @{$data{$ac}} if exists $data{$ac}; } if (/^(.+)\s;PF/) { push @{ $data{$1} }, $ac; next; } next;} next; } my $acn; open ACTIVATOR, "C:\\Users\\Jems\\Desktop\\Perl\\test\\Test2.txt" or die $!; open ACTIVOUT, ">C:\\Users\\jems\\Desktop\\Perl\\test\\ActivACNPF.txt" or die $!; select ACTIVOUT; while ($acn= ){ if($acn =~ m/^(......)\s\|/){ my $ab = $1; chomp ($ab); #print "$ab"; print "$acn | @{$data{$ab}}\n" if exists $data{$ab}; next; } } print STDOUT "DONE ACTIV";