田中です。
えーとすみません、連想配列の使いかたが良く分からないのですが、
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