A couple of comments on your code:
- Using a date format of YYYYMMDD is much cleaner, since lexical, numeric, and chronological sorts are identical.
- use strict;
- No need to use function prototypes.
- I see a lot of overuse of quotes in your code, e.g. push(@dir, "$file") is better written push(@dir, $file)