特定のフォルダにあるファイルを表示し、ファイルにリンクを張り、ファイルサイズとアップロードされた時間を表示しています。

print "<table>\n";
print "<tr><th>No.</th><th>FileName</th><th>FileSize</th><th>UploadTime</th></tr>\n";

opendir(DIR, "$dir" ) or die;
while(my $filename=readdir(DIR)){
    if($filename=~/^\.{1,2}$/){
        next;
    }
    ++$no;
    @fileinfo = stat("$dir$filename");
    $upldtime = &time($fileinfo[10]);
    $filesize = int ($fileinfo[7] / 1024);
    $filesize = ~ s/(\d)(\d\d\d)(?!\d)/$1,$2/g;
    print "<tr><td>$no</td><td><a href=\"$dir$filename\">$filename</a></td><td>$filesize KByte</td><td>$upldtime</td></tr>\n";
}
print "</table>\n";
closedir(DIR);

左端からNo.、ファイル名、ファイルサイズ、アップロードされた時間・・・と4つ並びます。
ここで、「アップロードされた時間」を基準にして、時間の新しいものから順にリスト表示したいのですが
根本的にやり方がわかりません。
whileより上でソートしていないといけないような気もするのですが・・・
誰か教えてください。。

&timeはここには出ていませんが、yyyy/mm/dd hh:mm:ss形式で表示させるためのサブルーチンです。