#!D:/Perl/bin/perl.exe # *** HTML表示ファイルの行頭や行末スペースを削除するPerlスクリプト *** Rev.1.000 # ファイル名:HTMLspaceCut.cgi # 作成:鷹の巣 URL:http://sakaguch.com/ 電子メール:http://sakaguch.com/cgi/postmail/ より送信して下さい。 # $content = 'Front Page等で作成されたHTMLファイルの行頭や行末スペースの削除を行います。'; # Perlの練習用として作成しましたので、簡単な判断しかしていません。(安全第一です。) # 元のhtmlファイル名には、.bakを付加して、バックアップを行っています。 # .bakを付加したファイルが存在する場合は、このバックアップファイルの更新を行いません。 # # 2001.09.28 Rev.0.000 初版 # 2002.08.12 Rev.0.001 コマンドラインからの起動をCGIに変更。 # 2002.10.11 Rev.0.002 HTML 4.01 strictに対応。 # 2002.11.23 Rev.1.000 公開(ブラウザIE6とNN7.0の文字化け対策の為、コメントを変更。) # # 起動方法:コマンドラインより、perl HTMLspaceCut.cgiと入力するか # http://example.com/cgi-bin/HTMLspaceCut.cgi等とWebサーバーから実行します。 # # 注)成形済みテキスト
?タグの間の行頭の空白は、削除しない様にしています。 # ただし、タブキーの削除は、指定があれば削除します。 #------------# # 基本設定 # #------------# # 実行時のみ、コメント行にします。通常は、起動しない(されない)様にすること。!!! #exit; # タブキーの削除設定(0:削除しない、1:削除する)###「削除しない」を推奨します。### #$FlagTabDel = 0; # 不要改行の削除設定(0:削除しない、1:削除する)###「削除しない」を推奨します。### #$FlagLfDel = 0; # 対象ファイルの設定 ###絶対パスかhttpドキュメントルートからのファイル名を指定します。### @SourceFile = ( # 書式→ '$FlagTabDel<>$FlagLfDel<>$SourceFile<>', '0<>0<>D:/WWW/public_html/index.html<>', '0<>0<>D:/WWW/public_html/xxxxx.html<>', '', ); #------------# # HTML設定 # #------------# $title = 'HTMLファイルのスペース削除'; $content = 'Front Page等で作成されたHTMLファイルの行頭や行末スペースの削除を行います。'; $keyword = 'HTMLファイル,スペース削除'; # 管理者名とメールアドレス $webmaster = '管理者名'; $mailaddress = 'webmaster@example.com'; $prev = '/index.html'; $next = ''; # 上部に挿入するリンク $UpperBanner = <<'_MSG_'; _MSG_ $DateSakusei = ''; #------------# # 設定完了 # #------------# &main; exit; #----------# # 主回路 # #----------# sub main { &header ($title, $content, $keyword, $mailaddress, $prev, $next, $UpperBanner, $DateSakusei); print '以下のファイルの行頭や行末スペースの削除処理が完了しました。元のソースファイル名には、末尾に.bakを追加しています。
/) { $FlagPre = 1; }
# 行頭空白削除
if (!$FlagPre) {
if ($SourceList =~ /^\s+/) { $SourceList =~ s/^\s+//; $FlagRep = 1; }
}
# 行末空白削除
if ($SourceList =~ /\s+$/) { $SourceList =~ s/\s+$//; $FlagRep = 1; }
# タブキーの削除
if ($FlagTabDel) {
if ($SourceList =~ /\t/) { $SourceList =~ s/\t//; $FlagRep = 1; }
}
# 不要改行の削除
if ($FlagLfDel && ($SourceList eq "\n")) { $FlagRep = 1; next; }
if ($SourceList =~ /<\/pre>/) { $FlagPre = 0; }
push (@new , "$SourceList\n");
}
if ($FlagRep) {
if (!(-e "$fileIN")) { # $fileINファイルが存在しなければ、
rename($fileOUT, "$fileIN");
}
open(OUT,">$fileOUT") || &error("Can't openOUT $fileOUT");
print OUT @new;
close(OUT);
}
return $FlagRep;
}
#--------------#
# エラー表示 #
#--------------#
sub error {
print "ERROR - $_[0]\n";
}
#------------------#
# HTMLのヘッダー #
#------------------#
sub header {
my ($title, $content, $keyword, $mailaddress, $prev, $next, $UpperBanner, $DateSakusei) = @_;
$head_flag = 1;
if (!$DateSakusei) {
($sec, $min, $hour, $day, $mon, $year, $wday) = localtime(time());
$DateSakusei = "作成日:" . sprintf("%04d年%02d月%02d日",$year+1900,$mon+1,$day);
}
print "Content-type: text/html\n\n";
print <<"_MSG_";
$title
$UpperBanner$DateSakusei 作成:$webmaster
$content
$title
_MSG_
}
#------------------#
# HTMLのフッター #
#------------------#
sub footer {
print <<"_MSG_";
|目次|▲頁先頭|
_MSG_
}