File1 1 H 35 1 C 22 2 H 20 2 C 30 File 2 A 1 HB2 MET 1 A 2 CA MET 1 A 3 HA ASP 2 A 4 CA ASP 2 Output 1 MET HB2 35 1 MET CA 22 2 ASP HA 20 2 ASP CA 30 #### #!/usr/bin/perl use strict; use warnings; my %data; open (SHIFTS,"file1.txt") or die; open (PDB, "file2.txt") or die; while (my $line = ) { chomp $line; my @fields = split(/\t/,$line); $data{$fields[4]} = $fields[2]; } close PDB; while (my $line = ) { chomp($line); my @columns = split(/\t/,$line); my $value = ($columns[1] =~ m/^.*?([A-Za-z])/ ); } if (my $value = $data{"$_"}) print "$columns[0]\t$fields[3]\t$value\t$data{$value}\n"; close SHIFTS; exit;