in reply to Hash problem

It always goes to the else because the data in your @updateInfo (why did you make it an array, and not a scalar, BTW? You're putting a single value into it) is not in any of the three lines of the file.

If you want the hashes to work in a case-independent way, access them as $hash{lc $key}.

Oh, and you are assigning the info to @updateInfo and testing $currentData{$line}. You should assign the test data to $line or test $currentData{$updateInfo[0]}.