tie @array , 'Tie::File' , "$file" ; foreach my $key (keys %varHash) { my $keyflag = 0 ; my $changedVal = $varHash{$key}{newVal}; my $startdef = ''; my $enddef = ''; my $storedindex; print "key $key | changedVal $changedVal \n"; for(my $i = 0 ; $i <= $#array ; $i++) { if($array[$i] =~ /$key/) { print "here $key \n"; $keyflag = 1 ; next; } elsif ($array[$i] =~ /\.*?\<\/default\>/gs) { # print "array[i] $array[$i] \n"; if($keyflag) { $array[$i] = "$startdef"."$changedVal"."$enddef"; $keyflag = 0; last; } } elsif($array[$i] =~ /^\s*\.*[^\>]$/) { $storedindex = $i ; } elsif($storedindex > 0 ) { if ($array[$i] =~ /\<\/default\>/) { my $range = $i - $storedindex; splice(@array, $storedindex,$range); $array[$storedindex] = "$startdef"."$changedVal"."$enddef"; last; } } } } untie(@array); }