#!/Perl/bin/MSWin32-x86-object/jperl.exe use LWP::Simple; use Net::FTP; require 'cgi-lib.pl'; &ReadParse(*in); # Setup your configuration. $ftpsite = ''; $ftpaccount = ''; $ftppassword = ''; $yourdir = '/yourdir'; $outfile = 'renewal_index.html'; $url = "http://yourhost/yourhome/"; $syear = 2001; $docroot = $ENV{'DOCROOT'}; $memodir = "memo"; # カテゴリキー文字列と個別HTMLファイルとの対応 %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", ); # 日記サイトから取得すべき今年度の日記ファイル名を配列に格納する。 if($in{'year'}){ $pyear = $in{'year'}; $pmon = 13; $outfile = "renewal_index_${pyear}.html"; }else{ push(@rnfiles, "renewal.html"); $pyear = (localtime)[5] + 1900;# 現在の年 $pmon = (localtime)[4] + 1;# 現在の月 } for($i=1;$i<$pmon;$i++){ push(@rnfiles, sprintf("renewal_%1.4d_%1.2d.html",$pyear,$i)); } # CGI出力 print "Content-type: text/html\n\n"; print "\n\n"; print "\n\n"; foreach (@rnfiles){ print "$_
\n"; $htmlfile = $url.$_; @content = split(/\n+/, (get $htmlfile)); foreach $line (@content){ if($line =~ /^
(\d+)\/(\d+)\/(\d+) *\(*\w*\.*\)*
/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>)*([^<]*)<\/A>/gi){ $anchor{"$1:$date:$_\#$1_$2"} = $3.$4.$5;print "",$3.$4.$5, "
\n"; } } } # 更新日記インデックスHTMLファイル出力 open(OUT, "> $outfile"); print OUT < 更新日記インデックス tsnetworkc3.png更新日記インデックス ${pyear}年版
HERE1 # メモのカテゴリのASCII文字列をキーに日本語文字列を連想配列の値として取得 # メモ格納ディレクトリにある categorized.txt から読み込む $blevel = 0; print OUT "
    \n"; if(open(IN, "<$docroot/$memodir/categorized.txt")){ while(){ chomp; if(/^(\t*)([^\t].*)$/){ $level = length $1; ($catstr, $category) = split(/\t/,$2); $categories{$catstr} = $category; if($blevel > $level){ $diff = $blevel - $level; if($diff >= 1){ for($i = 1;$i<=$diff;$i++){ $ts = "\t" x ($blevel - $i + 1); print OUT "$ts
\n"; } } }elsif($blevel < $level){ $diff = $level - $blevel; if($diff >= 1){ for($i = 1;$i<=$diff;$i++){ $ts = "\t" x ($blevel + $i); print OUT "$ts
\n"; $blevel--; } print OUT "\n"; # 過去のインデックスファイルへのリンク for($j=$syear;$j<=$pyear - 1;$j++){ print OUT "

更新日記インデックス${j}年版

\n"; } print OUT "
\n"; # カテゴリ別時系列記事リンク出力 foreach $key (sort keys(%anchor)){ ($ca, $date, $anc) = split(/:/, $key); if($cca ne $ca){ if($count > 0){ print OUT "
\n"; } if($page{$ca}){ print OUT "
", $categories{$ca}, "
\n