#!/usr/bin/env perl use strict; use warnings; my $file1 = "2hgs_d00_internal_nrg_e.dat"; my $file2 = "2HGS_bio_conv-min_p.pdb"; open( MYFILE, '<', $file1 ) or die "cannot open $file1: $!"; open( NEWF, '<', $file2 ) or die "cannot open $file2: $!"; my (@a_vals, @b_vals); while ( ) { chomp; my( $label, $index, $value ) = ( split /\s+/ )[3, 5, -1]; $a_vals[ $index ] = $value; $b_vals[ $index ] = $value; } close MYFILE; while ( ) { chomp; my @fields = ( split /\s+/ ); my $index = $fields[4]; my $label = $fields[-1]; if ($label eq "A"){ $fields[-2] = $a_vals[ $index ] } if ($label eq "B"){ $fields[-2] = $b_vals[ $index ] } my $output = join "\t", @fields; print "$output\n"; } close NEWF;