[x@realserver ~]$ cat gen_links.pl

#!/usr/bin/perl
use File::Basename;
use File::Find;
use File::stat;
use IO::File;
#use Audio::Wav;
#use Data::Types qw(:all);

$archdir = "/home/x/phone/r20pw";
$ramurl = "http://realserver/ramgen/phone/r20pw";
$output = "/home/x/links400.shtml";

#$archdir = @ARGV[0];
#$ramurl = @ARGV[1];
#$output = @ARGV[2];

# my $wav = new Audio::Wav;

$IDX = 'mtime';

*name = *File::Find::name;

#@files = glob("$archdir/*.wav");
#@files = glob("$archdir/*.rm");

find(\&wanted, $archdir);
@files = sort { $time{$b} <=> $time{$a} } keys %time;

$fh = IO::File->new($output, "w") or die "Couldn't open $output for reading: $!\n";
$old_fh = select($fh);

foreach $file (@files) {
   print "<tr>\n";
   ($filename, $dir, $suffix) = fileparse($file, qr{\..*});
#   $read = $wav -> read($file);
#   $length = to_whole($read -> length_seconds());
   $filesize1 = -s $file;
   $length = $filesize1 / 2887;
   print "<td><a href=\"$ramurl/$filename.rm\">$filename.rm</a></td>\n";
   print "<td>\n";
   print "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
   print "<tr>\n";
   print "<td><a href=\"$ramurl/$filename.rm\"><div class=\"lengthbar\" style=\"width:${length}px;\"></div></a></td>\n";
   print "<td><a href=\"#\" onclick=\"mudOpenWin('annotation/annotation.php?msg=$filename', 'annotate', 400, 600);\">&nbsp; <!--#include 
virtual=\"/cgi-bin/r20pw/chkannot.pl?name=$filename-title\"--></a></td>\n";
   print "</tr>\n";
   print "</table>\n";
   print "</td>\n";
   print "</tr>\n";
}

select($old_fh);
$fh->close();


sub wanted {
    my $sb;

    /^.*\.rm\z/s &&
    ($sb = stat($_));  # XXX: should be stat or lstat?
    return unless $sb;
    $time{$name} = $sb->$IDX();  # indirect method call
}
