Ruby AWKING for Beginnerで書いた更新日記インデックス作成用スクリプトをPerlで書き直した。比較してみるのも一興である。[12/24/2002]
use LWP::Simple;
use Net::FTP;
# Setup your configuration.
$ftpsite = '';
$ftpaccount = '';
$ftppassword = '';
$yourdir = '';
$outfile = 'renewal_index.html';
$url = "http://homepage1.nifty.com/kazuf/";
%category = (
"rn" => "更新履歴",
"cw" => "Cygwin",
"ps" => "PS2 Linux",
"com" => "コミュニケーション",
"ai" => "A.I.",
"book" => "蔵書目録",
"awking" => "AWKING Project",
"awk" => "AWK",
"net" => ".net",
"os" => "Operating System",
"tt" => "立花 隆",
"perl" => "Perl",
"ruby" => "Ruby",
"tcl" => "Tcl/Tk",
"python" => "Python",
"prolog" => "Prolog",
"linux" => "Linux",
"printing" => "Printing",
"hiroshima" => "ひろしま",
"an" => "ArrangeNote",
"qnx" => "QNX",
"web" => "Web Development",
"diary" => "日記",
"scheme" => "Scheme",
"tsn" => "TS Network",
"tip" => "Tips",
"col" => "コラム",
"xml" => "XML",
"vm" => "VMware",
"freebsd" => "FreeBSD",
"computing" => "Computing",
"lang" => "言語",
"card" => "カード",
"oo" => "OpenOffice",
"sf" => "SF",
"wbh" => "WinBatchEh",
);
%page = (
"cw" => "cygwin.html",
"awk" => "awk.html",
"awking" => "awking.html",
"perl" => "perl.html",
"python" => "python.html",
"tcl" => "tcltk.html",
"ruby" => "ruby.html",
"scheme" => "scheme.html",
"ps" => "ps2linux.html",
"an" => "an.html",
);
while(<DATA>){
chomp;
print $_,":\n";
$htmlfile = $url.$_;
@content = split(/\n+/, (get $htmlfile));
foreach $line (@content){
if($line =~ /^<DT>(\d+)\/(\d+)\/(\d+)<DD>/i){
if(length($1) == 1){
$mon = "0".$1;
}else{
$mon = $1;
}
if(length($2) == 1){
$day = "0".$2;
}else{
$day = $2;
}
$date = "$mon/$day/$3";
print $date, ":\n";
}
while($line =~ /<A NAME="([^_]+)_(\d+)">([^<]*)(?:<A[^>]+>)*([^<]*)(?:<\/A>)*([^<]*)<\/A>/gi){
$anchor{"$1:$date:$_\#$1_$2"} = $3.$4.$5;print $3.$4.$5, "\n";
}
}
}
open(OUT, "> $outfile");
#print "Content-type: text/html\n\n"
print OUT <<HERE1;
<HTML>
<HEAD>
<TITLE>更新日記インデックス</TITLE>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=SHIFT_JIS">
<style type="text/css">
<!--
BODY{background:#FFFFF0}
.item{font-size:12pt;color:blue;font-weight:bold;text-decoration:underline}
//-->
</style>
</HEAD>
<BODY>
<IMG SRC="http://homepage1.nifty.com/kazuf/png/tsnetworkc3.png" ALIGN=LEFT HSPACE=20 ALT="tsnetworkc3.png">更新日記インデックス
<HR>
HERE1
print OUT "<UL>";
foreach $cat (sort keys(%category)){
if($count % 10 == 0){
print OUT "\n<LI><A HREF=\"$outfile\#", $cat, "\">", $category{$cat}, "</A>";
$count = 0;
}else{
print OUT " <A HREF=\"$outfile\#", $cat, "\">", $category{$cat}, "</A>";
}
$count++;
}
print OUT "\n</UL>\n";
print OUT "<p><a href=\"renewal_index_2001.html\">更新日記インデックス2001年版</a></p>\n<HR>\n";
foreach $key (sort keys(%anchor)){
($ca, $date, $anc) = split(/:/, $key);
if($cca ne $ca){
if($count > 0){
print OUT "</UL><BR>\n";
}
if($page{$ca}){
print OUT "<div class=\"item\"><A NAME=\"", $ca, "\"><A HREF=\"", $page{$ca}, "\">", $category{$ca}, "</A></A></div>\n<UL>\n";
}else{
print OUT "<div class=\"item\"><A NAME=\"", $ca, "\">", $category{$ca}, "</A></div>\n<UL>\n";
}
$cca = $ca;
$count++;
}
print OUT "<LI><A HREF=\"", $anc, "\">", $anchor{$key}, "</A>&\#32&\#32(", $date, ")\n";
}
print OUT <<HERE2;
</UL><BR>
<HR>
<I><A HREF="http://homepage1.nifty.com/kazuf/index.html">TS Network ☆ミ</A></I> <FONT COLOR="BLUERED">>></FONT>
<ADDRESS><A HREF="mailto:kazuf@mars.dti.ne.jp"><kazuf@mars.dti.ne.jp></A></ADDRESS><BR>
</BODY>
</HTML>
HERE2
close(OUT);
$ftp = Net::FTP->new($ftpsite);
print "$ftpsiteに接続しました。\n";
$ftp->login($ftpaccount, $ftppassword);
print "loginしました。\n";
$ftp->cwd($yourdir);
print "$yourdirディレクトリに移動しました。\n";
$ftp->ascii();
print "asciiモードにします。\n";
$ftp->put($outfile, $outfile);
print "$outfileを転送しました。\n";
$ftp->quit();
print "FTPを終了しました。\n";
sleep(1);
__END__
renewal.html
renewal_2002_11.html
renewal_2002_10.html
renewal_2002_09.html
renewal_2002_08.html
renewal_2002_07.html
renewal_2002_06.html
renewal_2002_05.html
renewal_2002_04.html
renewal_2002_03.html
renewal_2002_02.html
renewal_2002_01.html