田中です。

えーとすみません、連想配列の使いかたが良く分からないのですが、
ruby にのりかえるのは、ruby 本がでてからでいいや、と思って待っていたの
ですがなかなかでないので、

やりたいことは、 perl で書くと以下のようなことです。
わからないのは $array{$page[1]}++; のカウントと、%array のソート。あたり。

--------
#!/usr/bin/perl

while (<>) {

    @line = split(/\"/);
    @page = split(" ", $line[1]);

    if (length($page[1]) != 1) {
	$page[1] = substr($page[1], 0, rindex($page[1], "/"));
    }
    # page count.
    $array{$page[1]}++;
}

# hit page report.
$cnt = 0;
print "\n\n\n";
print "              hit : Directory\n"; 
print "-----------------------------------------\n"; 
foreach $name (sort { $array{$b} <=> $array{$a} } keys %array) {
    $cnt += 1;
    printf(" %5d : %8d : %s\n", $cnt, $array{$name} , $name);
}
--------
処理対象のファイル。
--------
infoweb.or.jp - - [01/Oct/1998:00:04:33 +0900] "GET /manual/index.html HTTP/1.1" 200 249
infoweb.or.jp - - [01/Oct/1998:00:04:34 +0900] "GET /manual/Left2.html HTTP/1.1" 200 1146
infoweb.or.jp - - [01/Oct/1998:00:04:35 +0900] "GET /manual/Right2.html HTTP/1.1" 200 3760
infoweb.or.jp - - [01/Oct/1998:00:04:35 +0900] "GET /manual/image/SB-S.gif HTTP/1.1" 200 2518
--------


--------
Boarder. -> Katsuya Tanaka