in reply to pseudocode needed - comparing multiple columns of two files

In a sense, you can follow each line and code it, with some changes:

open all files - open one file, then the other.
concatenate $number.$year into one $searchvalue following your example, you should concatenate a space between the two values.
populate array1 with these $searchvalues - that's already done, keys %hash is your array.
grab all lines from file 2 into array2 - also redundant. if you iterate over each line, and compare it, you don't need to load all lines into an array.

compare array1 to array2, where value from array1 doesn't find a match in file2, print hash value with the key of $searchvalue to file results

This, I think, is the main loop, if you're comparing values from file1 to file2, I think you should first go over file2, populate its content into an array, then go over file1, and  print $_."\n" unless grep ($_ eq $number.' '.$year, @array);

Software speaks in tongues of man; I debug, therefore I code.