in reply to find text in xml tag and replace another tag from data in same txt file

There are quite a few issues with your script, if you put these two lines at the top you will get an idea:
use strict; use warnings;
See The strictures, according to Seuss for why.

To fix the most obvious try this (untested):

my %map = (); while (<IN>) { chomp $_; my @items = split(/\,/, $_); $map{$items[0]} = $items[1]; # [1] not [2] } close IN; my ($cur_awb,$cur_val); while (<BASE>) { chomp $_; if ($_ =~ m/\<KEY_BOL_REF\>(\d*)\<\/KEY_BOL_REF\>/) { $cur_awb = $1; $cur_val = $map{$cur_awb}; # should do some error check here print OUT $_ . "\n"; } # ... etc. }