in reply to Insert lines in a file

That's how I understood your task.
Though you'd better follow davido's advice.
use Inline::Files; $v = 'r13'; %b = map {chomp; $_ => undef} <FILEB>; while (<FILEA>){ @t = split /[\s|\"]/; push @a, $t[2] if ! exists $h{$t[2]}; $h{$t[2]}{$t[6]} = $t[0]; } foreach (@a){ exists $b{$v} ? ($h{$_}{$v} = "test") : ($h{$_}{$v} = "skip"); foreach $key (sort keys $h{$_}){ $key ne '' ? print "$h{$_}{$key} $_ version $key\n" : print "$h{$_}{$key} $_\n"; } } __FILEA__ test "r5" test "r1" test "r1" version "10" test "r1" version "11" test "r1" version "12" skip "r1" version "15" test "r4" test "r4" version "10" skip "r4" version "11" test "r3" skip "r3" version "11" test "r10" skip "r10" version "11" __FILEB__ r1 r10 r5 r13