use warnings; use strict; my %areas; my $file; my $fh; $file = 'f2.txt'; open $fh, '<', $file or die "Can not open file $file: $!"; while (<$fh>) { next if $. == 1; my ($name, $area) = split; $areas{$name} = $area; } close $fh; my $name_line = 0; my $name; my $area; $file = 'f1.txt'; open $fh, '<', $file or die "Can not open file $file: $!"; while (<$fh>) { chomp; if ($. == 1) { print "$_ Area\n"; next; } my @tokens = split; if (scalar @tokens == 1) { print "$_\n"; $name = $tokens[0]; $area = $areas{$name}; $name_line = 1; } else { if ($name_line) { $name_line = 0; print "$_ $area\n"; } else { print "$_\n"; } } } close $fh; __END__ Name measure Age Area Eric Test1 40 16 Texas Test2 35 16.5 Test3 60 27 Tets4 20 30 Dan Test1 15 50 NY Test2 22 70