foreach (readdir(DIR)) { if (/^([a-z0-9]*?-[a-z]{2}-[a-z]{2,3})-(\d{8})(-eol)?\.(pdf|html)$/) { push(@{$files{$1}}, $2); } } #### foreach (keys %files) { $files{$_} = [sort @{$files{$_}}]; }