#!/usr/bin/perl -w
######################################################################
# (c) Michael Schilli 1999
######################################################################

use File::Find;

foreach $arg (@ARGV) {            # Alle angegebenen Ver-
    File::Find::find(\&fc, $arg); # zeichnisse durchlaufen
}                                 # und %Filesbydate 
                                  # aufbauen

$maxcount = 10;                   # Maximal 10 Dateien 
                                  # ausgeben

                                  # Auswertung: Nach 
                                  # letztem Datum sortieren
hashloop:foreach $date (sort { $b <=> $a } 
                                  keys %Filesbydate) {

                                  # Listen von Einträgen
    $timestr = localtime($date);  # gleichen Datums

    foreach $file (@{$Filesbydate{$date}}) {
                                  # Abbruch falls genug
        last hashloop unless $maxcount--;  
                                  # Ausgabe mit Datum
        print "$file (", $timestr, ")\n";  
    }
}

###########################################################
# Callback-Funktion von File::Find::find
###########################################################
sub fc {                              
    my $filedate = (stat($_))[9]; # Modifikationsdatum

    return unless -f _;           # Keine Directories,
                                  # sparsamer stat()-Aufruf

                                  # Datum noch nicht 
                                  # belegt legt: 
                                  # Neue Array-Referenz 
    $Filesbydate{$filedate} = [] unless 
                           exists $Filesbydate{$filedate};
     
                                  # Eintrag in Array 
                                  # aufnehmen
    push(@{$Filesbydate{$filedate}}, 
         "$File::Find::dir/$_");
}
