#!/usr/bin/perl use Modern::Perl; use File::Slurp qw/read_file write_file/; my $uniprot = 'D:\\ARP\\Downloads\\uniprot-sfinal.txt'; my $activin = 'D:\\ARP\\Downloads\\Activator-Pfam.txt'; my $antioxin = 'D:\\ARP\Downloads\\AntiOxidant-Pfam.txt'; my $toxinin= 'D:\\ARP\\Downloads\\Toxin-Pfam.txt'; my $activout = 'D:\\ARP\\Downloads\\ActivACNPF.txt'; my $antioxout= 'D:\\ARP\\Downloads\\AntioxACNPF.txt'; my $toxinout= 'D:\\ARP\\Downloads\\ToxinACNPF.txt'; my @activline; my @antioxline; my @toxinline; my %activ = map { /(.+)\s+\|\s+(PF.{5})/; $1 => $2 } read_file $activin; my %antiox = map{ /(.+)\s+\|\s+(PF.{5})/; $1 => $2 } read_file $antioxin; my %toxin = map { /(.+)\s+\|\s+(PF.{5})/;$1=> $2} read_file $toxinin; for ( read_file $uniprot ) { /(.{6})\s+.+=([^\s]+)/; push @activline, "$1 $2 $activ{$1}\n" if $activ{$1}; push @antioxline, "$1 $2 $antiox{$1}\n" if $antiox{$1}; push @toxinline, "$1 $2 $antiox{$1}\n" if $antiox{$1}; } write_file $activout, @activline; write_file $antioxout, @antioxline; write_file $toxinout, @toxinline; print STDOUT "DONE\n";