#!/usr/bin/perl use KCatch qw( mode=plain ); #エラー取得 ####モジュール宣言############## use CGI qw(:standard); use Encode qw/encode decode/; ####モジュール宣言############## ####変数宣言################### use vars qw( $strBasePath ); #基本となるパス use vars qw( $strDataPath ); #rssが保存されているディレクトリ use vars qw( $strDataFileName ); #rssファイル名 use vars qw( $strHeaderPath ); #rssのヘッダが保存されているディレクトリ use vars qw( $strHeaderFileName ); #rssヘッダファイル名 use vars qw( $strFutterPath ); #rssのフッタが保存されているディレクトリ use vars qw( $strFutterFileName ); #rssフッタファイル名 use vars qw( $intSerialNumber ); #フォームのシリアル番号 use vars qw( $strRDFSequence ); #rdf:Seq項目をリンクから取得 use vars qw( $strItemData ); #itemを構築して格納 use vars qw( $intCount ); #ループ用 use vars qw( $strLine ); #読み込んだ1行 use vars qw( $boolChannelFind ); #Channel見つけた=true Itemない=false use vars qw( $boolItemFind ); #Item見つけた=true Itemない=false use vars qw( @strTempArray ); #ファイル読み込み作業用 use vars qw( $strTemp ); #作業用 ####変数宣言################### ####初期設定#################### $strBasePath = "/home/flesh_gogo/public_html/"; $strDataPath = "rss/"; $strDataFileName = "rss.rdf"; $strHeaderPath = "cgi-bin/rss/"; $strHeaderFileName = "rss.header"; $strFutterPath = "cgi-bin/rss/"; $strFutterFileName = "rss.futter"; $intSerialNumber = 1; $boolChannelFind = false; $boolItemFind = false; ####初期設定#################### ####HTMLヘッダ書き出し#### #print "Content-type: text/html;\n\n"; print "Content-type: text/html; charset=utf8\n\n"; print "\n"; print "\n"; print " \n"; print " \n"; print " " . encode("utf8", decode("euc-jp", "フレッシュゴーゴー管理画面 -RSS作成-")) . "\n"; print "\n"; print "\n"; print "
\n"; ####HTMLヘッダ書き出し#### if(param('Action') eq "entry") { print $strBasePath . $strDataPath . $strDataFileName . &funcEUC2UTF8("に書き込みました!!
\n"); open txtOUT, "> " . $strBasePath . $strDataPath . $strDataFileName; flock(txtOUT, 2); #ヘッダ書込み print &funcEUC2UTF8("ヘッダファイル:") . $strBasePath . $strHeaderPath . $strHeaderFileName . "
\n"; open txtIN, $strBasePath . $strHeaderPath . $strHeaderFileName; @strTempArray = ; foreach $strTemp(@strTempArray) { print txtOUT $strTemp; } close txtIN; #チャンネル書き込み print txtOUT " \n"; print txtOUT " " . param('chtitle') . "\n"; print txtOUT " " . param('chlink') . "\n"; print txtOUT " " . param('chdescription') . "\n"; #Dublin Core対応 print txtOUT " " . param('chtitle') . "\n"; print txtOUT " machtype frends\n"; print txtOUT " Copyright c 2004 Flesh GoGo\n"; print txtOUT " 2004-08-20T12:00+09:00\n"; #アイテム書き込み for($intCount = 1;$intCount <= param('itemcount');$intCount++) { if(param('delete' . $intCount) ne "1") { ##シーケンス情報取得 $strRDFSequence = $strRDFSequence . " \n"; ##アイテム情報取得 $strItemData = $strItemData . " \n"; $strItemData = $strItemData . " " . param('title' . $intCount) . "\n"; $strItemData = $strItemData . " " . param('title' . $intCount) . "\n"; $strItemData = $strItemData . " " . param('link' . $intCount) . "\n"; $strItemData = $strItemData . " " . param('description' . $intCount) . "\n"; $strItemData = $strItemData . " " . param('description' . $intCount) . "\n"; $strItemData = $strItemData . " " . param('date' . $intCount) . "\n"; $strItemData = $strItemData . " \n"; $strItemData = $strItemData . "\n"; } } if(param('link0') ne "" && param('title0') ne "" && param('description0') ne "") {##新規アイテム ##アイテム情報取得 $strItemData = $strItemData . " \n"; $strItemData = $strItemData . " " . param('title0') . "\n"; $strItemData = $strItemData . " " . param('title0') . "\n"; $strItemData = $strItemData . " " . param('link0') . "\n"; $strItemData = $strItemData . " " . param('description0') . "\n"; $strItemData = $strItemData . " " . param('description0') . "\n"; $strItemData = $strItemData . " " . param('date0') . "\n"; $strItemData = $strItemData . " \n"; $strItemData = $strItemData . "\n"; } ##シーケンス情報書き込み print txtOUT " \n"; print txtOUT " \n"; print txtOUT $strRDFSequence; print txtOUT " \n"; print txtOUT " \n"; print txtOUT " \n"; print txtOUT "\n"; print txtOUT $strItemData; print txtOUT "\n"; #フッタ書込み print &funcEUC2UTF8("フッタファイル:") . $strBasePath . $strFutterPath . $strFutterFileName . "
\n"; open txtIN, $strBasePath . $strFutterPath . $strFutterFileName; @strTempArray = ; foreach $strTemp(@strTempArray) { print txtOUT $strTemp; } close txtIN; close txtOUT; } ##RSSファイル読み込み print &funcEUC2UTF8("rssファイル:") . $strBasePath . $strDataPath . $strDataFileName . "
\n"; print "
\n"; #ファイル読込み open FILE, $strBasePath . $strDataPath . $strDataFileName; while ($strLine = ) { ##改行をLFに統一 $strLine =~ s/\x0D\x0A|\x0D/\x0A/g; #改行を
に変換 if($strLine =~ /channel rdf:about/) {##チャンネルヘッダ発見 print "
\n"; print &funcEUC2UTF8("チャンネル情報") . "
\n"; print "
\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; ##発見フラグON $boolChannelFind = true; } if($strLine =~ /item rdf:about/) {##アイテムヘッダ発見 print "
" . &funcEUC2UTF8("サイトリンク") . "
\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; ##発見フラグON $boolItemFind = true; } if($strLine =~ /title/) {##タイトルヘッダ発見 if($boolChannelFind eq true) {##チャンネルタイトル発見 print " \n"; print " \n"; print " \n"; print " \n"; } if($boolItemFind eq true) {##アイテムタイトル発見 print " \n"; print " \n"; print " \n"; print " \n"; } } if($strLine =~ /\n"; print " \n"; print " \n"; print " \n"; } if($boolItemFind eq true) {##アイテム概要発見 print " \n"; print " \n"; print " \n"; print " \n"; } } if($strLine =~ /dc:date/) {##dc:dateヘッダ発見 if($boolChannelFind eq true) {##チャンネル日付発見 print " \n"; print " \n"; print " \n"; print " \n"; print "
" . &funcEUC2UTF8("削除") . "
" . &funcEUC2UTF8("リンク") . "
" . &funcEUC2UTF8("サイトタイトル") . "
" . &funcEUC2UTF8("タイトル") . "
" . &funcEUC2UTF8("サイト概要") . "
" . &funcEUC2UTF8("概要") . "
" . &funcEUC2UTF8("サイト開始日") . "
\n"; print "
\n"; ##発見フラグOFF $boolChannelFind = false; ##アイテム新規入力ボックス print "
\n"; print &funcEUC2UTF8("アイテム情報") . "
\n"; print "
\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print "
" . &funcEUC2UTF8("新規リンク") . "
" . &funcEUC2UTF8("新規タイトル") . "
" . &funcEUC2UTF8("新規概要") . "
" . &funcEUC2UTF8("更新日") . "
\n"; print "
\n"; } if($boolItemFind eq true) {##アイテム日付発見 print " \n"; print " " . &funcEUC2UTF8("更新日") . "\n"; print " \n"; print " \n"; print "\n"; print "
\n"; ##発見フラグOFF $boolItemFind = false; $intSerialNumber = $intSerialNumber + 1; } } } close FILE; print "
\n"; ####HTMLフッタ書き出し#### print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; ####HTMLフッタ書き出し#### sub funcEUC2UTF8 {##utf8フラグなるものを落とすために、変換が長くなるので、ここでまとめる my $strData; ($strData) = @_; return (encode("utf8", decode("euc-jp", $strData))); }