Ehm, from what I can tell, you're pushing the same hash onto @lookup more than once. This could happen if the file does not contain a Date: line, and therefore $hash isn't being reset (for empty an empty file)
To prevent this kind of errors, you should lexically scope your variables using my (see perldoc -f my)