#!C:/Perl/bin/perl -w #use CGI ':standard'; open (UPDATE, "update.txt") or die "Cannot open update.txt"; @data = ; close (UPDATE); #SAMPLE DATA FROM THIS ARRAY IS AS FOLLOWS: #T00001 0123-12345 DD001 67 #T00002 0123-12345 DD001 99 #T00003 0123-12345 DD002 0 #T00008 0123-12346 DD001 76 #T00014 7777-77777 DD001 88 #T00020 0999-99999 DD001 99 open (MDF, "mdfl.txt") or die "Cannot open update.txt"; @data2 = ; @data2 = @data2; close (MDF); #SAMPLE DATA FROM THIS ARRAY IS AS FOLLOWS: #T00001 0123-12345 DD001 100 100 #T00002 0123-12345 DD001 100 100 #T00003 0123-12345 DD001 100 100 #T00004 0123-12345 DD001 100 100 #T00007 0123-12345 DD002 100 100 #T00008 0123-12346 DD001 100 100 #T00013 7777-77777 DD002 100 100 #T00014 7777-77777 DD002 100 100 #T00015 7777-77777 DD003 100 100 #T00016 8888-88888 DD001 100 100 #T00019 8888-88888 DD003 100 100 #T00020 9999-99999 DD004 100 100 #I start by reading each line fo the first array, called @data #I split this line on tabs foreach $line (@data) { chomp $line; @array = split (/\t/, $line); $dmpiid = $array[0]; $be = $array[1]; $osuf = $array[2]; $update = $array[3]; #Then I read each line from the second array, splitting it on tabs too foreach $line2 (@data2) { chomp $line2; @array2 = split (/\t/, $line2); $dmpiid2 = $array2[0]; $be2 = $array2[1]; $osuf2 = $array2[2]; $last = $array2[3]; $curr = $array2[4]; #next I find where certain values are the same from each array if (($dmpiid) eq ($dmpiid2)) { #when found, I update the appropriate values as indicated $last = $curr; $curr = $update; #next, I push the following string back into the @data2 array $new = "$dmpiid2\t$be2\t$osuf2\t$last\t$curr\n"; push (@data2, $new); #next I jump out of the inner loop because there's no need to keep checking last; #however, once I do that, I need to delete the previous instance of #the data I just updated, otherwise the array will contain both old and #new data...this is where I get stuck } #end if } #end inner foreach }# end outer foreach #this is my test which prints my results. unfortunately, the old data is present allong with the new data. foreach $item (@data2) { print "$item\n"; }