Setting aside that you are using bare word filehandles, this is a fine solution assuming one of the files can fit into memory as a perl hash. It may be able to be improved by determining which of the two files is smaller and loading that one into memory (assuming which file should be considered the filter isn't important to
). Unfortunately, this solution fails if you need to support arbitrarily large files. I know the description of the problem says one of the files is being read into memory, I am just thinking about the general problem.