#!/usr/local/bin/perl #$hostはRSSで日付を押されたときにジャンプするhtml #(RDFのitemのとこに書かれるもの) #この例ではdiary.cgiでにっきのテキストを生成している。 $host = "http://hpcgi3.nifty.com/shikis/diary.cgi"; #$htmlは更新をチェックするファイル。今回はテキストファイルから生成している。 $html = "/homepage/diary.txt"; #RDFを出力しているファイルのURL。今回はこのファイルのこと。 $cgifile = "http://hpcgi3.nifty.com/shikis/diaryrss.cgi"; open(IN,"$html")|| die "error html\n"; @line = ; close(IN); #ソースからタイトル、リンク、説明文、日付を抽出 #日付はnameタグの内容。タイトルはdtタグで囲まれたもの。 #説明文はnameタグの次の行。リンクは日付を利用している。 #つまり、[日付]
タイトル

という行 #があれば抽出し、その次の1行を説明文とする。 #日付へのジャンプは$host#日付となる。 #日付は2006/01/01のような形式のみ対応。 #テキストの構造はhttp://homepage3.nifty.com/shikis/diary.htmlの #フレームソース表示で確認してください。 foreach (@line){ if($isItem == 1){ $str = $_; $str =~ s/<.*?>//g; #不要なマークアップを削除 $descr[$items] = $str; $isItem = 0; #説明文は1要素だけにしておく }elsif(m|
\[.*?\]
(.*?)

|){ $link[++$items] = $1; $title[$items] = $2; $date[$items] = $1; $date[$items] =~ s/\//-/g; $items_list .= qq( \n); $isItem = 1; }elsif(m|\[.*?\]
|){ $link[++$items] = $1; $date[$items] = $1; $date[$items] =~ s/\//-/g; $items_list .= qq( \n); $title[$items] = "タイトルなし"; $isItem = 1; } } #以下、RSSの構文に従って出力 print < styles-rdf.css" type="text/css"?> 四季にっき http://homepage3.nifty.com/shikis/diary.html 日々の出来事・興味を持った情報に対する感想を日記にしています。 $items_list EOF if( $#link == -1 ) { print "err itemlist\n"; } else { for $i (1..$#link){ print < $title[$i] $host#$link[$i] $date[$i] $descr[$i] EOF } print "\n"; }