George_Sherston++
If you don't want to loose the speed of hash lookups, you might want to store a list of lists (
[ $date, $user, $file ], [ ... ], ...) and then have three hashes of lists (
{ $date => [ @matching_elems ] }, { ... }, ...) where the
@matching_elems might be references to the lists in your master list (faster) or indices into it (more flexible). This is probably ripe ground for use of an object.
Makeshifts last the longest.