>(引用符)をつけるCGI

久々、スーツ着て、会社いってきた。
新しい営業先にいって、昨日作ったプレゼンを見せてきたのだが、
しかし、スーツは暑い。
前はずっとスーツで会社にいっていたのでなれていたのだが、
スーツを着ないことになれると、すっごい違和感を感じる。
さて、今日もすっごく簡易な自分が使いたい
Perlを組んだ。
これは、テキストの返信に「>」の記号をつけるもので
よく、メールの返信に、「>」がつくでしょう?
それをフォームでテキストを貼り付けて送信をおすだけで作れるもの。
例えば、雑談掲示板のレスを書くときに引用文を使うときに、
TXT文に1個ずつ、「>」をつけないといけないがめんどくさいので、
フォームに、掲示板のレスをテキストで流し込むだけで、
自動的に「>」をつけるっていうプログラム。
いつも、「>」をつけるのがめんどくさくて、作ってしまった.
作成時間、15分(笑)
必要最小限のものしかないデス。

#!/usr/local/bin/perl #Perlのパスを記述
require ‘jcode.pl’; #ライブラリの読み込み
$homeurl=’/midilin/res-form.html’; #ホームページURL
$program=’res_sakusei.cgi’; #このプログラム名
$mycode=’sjis’; #プログラムの漢字コード
print "Content-type: text/html\n\n"; #CGIのヘッダを出力
read(STDIN, $form_data, $ENV{‘CONTENT_LENGTH’});
#↑データの受け渡し
&decode(); #デコード処理
$text = $cgi{‘text’};
$mail = $cgi{‘mail’}; #←使われてない
# 改行制御
$text =~ s/\r\n/\n/g; # Windows系(CR,LF)->LF
$text =~ s/\r/\n/g; # Mac 系(CR)->LF
$text =~ s/\n/\n> /g; #
# ファイル名書き出し作業
$listfile="/www/midilin/res.txt"; #ファイル書き出し先
$listurl="/midilin/res.txt"; #ファイル書き出し先
&data_check(); #データのチェック
&append_list(); #リストファイルへの追加
&print_browser(); #ブラウザへの表示
exit;
#textが入っていなかったらエラー
sub data_check{
if ($text eq "") {
print <<EOF;
EOF
exit;
}
}
#ファイル書き出し
sub append_list{
open(FILE, ">$listfile");
print FILE <<EOF;
> $text
EOF
}
#ブラウザ表示
sub print_browser{
print <<EOF;
<html>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=res.txt">
<TITLE>Thanks</TITLE>
</html>
EOF
}
sub decode{
@part = split(‘&’, $form_data); #←データ複数時対応
foreach $i (@part) { #←各データごとに処理
($valiable, $value) = split(‘=’, $i); #←name/valueで分離
$value =~ tr/+/ /; #←↓デコード
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
jcode’convert(*value,$mycode);#←漢字コードを統一’
#$value =~ s/&/&amp;/g; #←特殊文字対策
#$value =~ s/"/&quot;/g; #←特殊文字対策
#$value =~ s/</&lt;/g; #←特殊文字対策
#$value =~ s/>/&gt;/g; #←特殊文字対策
#$value =~ tr/\r\n//d; #←改行コードを削除
$cgi{$valiable}=$value; #←デコードしたら一時保存
}
}

今までのプログラム(リンク追加や、チェルトHTML生成など)の無駄なところを排除して、
TXTで、改行「\n」を「\n>」と、うって、
ブラウザ表示のところを、リフレッシュで直接飛ばすだけという
いたってシンプルなプログラム。
たとえば、掲示板の引用文をつけたり、
あと、メールをするときに、TXT方式ではなく、HTML方式(リッチテキスト方式)で
送られた場合に返信をするときに、
返信をすると「>」がつかないのだが、
これをつかえば、自然に、「>」がつくので、
手打ちで、「>」をしなくても、大丈夫。
ちなみに、最近、気が付いたことなのだが、
雑談掲示板で、引用文を使うときに、「>」を手抜きして、
文の最初だけに、>をつけてお返事を書く人が何人かいらっしゃるのだが
どれが自分が書いたもので、どれが、相手へのレスが、書いている本人にはわかると思うのだが
他の人が読むのは、改行の位置で見分けないといけないので、
実は、これは、他の人から見ると、ちょっと見にくいと思う(^^;
よく読まないとわからないので、引用文はめんどくさいけれど
各行に「>」をつけたほうがいいと個人的には思うので、
もし、「>」をうつのをめんどくさい人は、上のPerlのプログラムをはりつけて、
ローカル上で、CGIを使える環境にしてあとは、入力フォームを「name=text」渡せば返信できるので、
よければ使ってください(笑)
ん?
フォームHTMLを作るのめんどくさい?
んじゃぁ、こっちも。

<HTML><HEAD><TITLE>返信「>」追加フォーム</TITLE></HEAD>
<BODY>
<FORM METHOD="post" ACTION="res_sakusei.cgi">
<P> 
<P>TXT文<br>
<textarea name="text" cols="100" rows="10">テスト</textarea>
<P><BR>
<P><INPUT TYPE="submit" VALUE="OK ">
<INPUT TYPE="reset" VALUE=" とりけし ">
</FORM>
</BODY></HTML>

上のPerlをres_sakusei.cgiとして、下のHTMLをres-form.htmlとして、
あとは、パスを書き換えれば動きます。
ローカル上でPerlが動かない人は、1個ずつ「>」をうってくれると
めんどくさいかもしれないけれど、見やすいので助かります(^^)
(引用文を使うこと自体が、見にくいといわれてしまうと元も子もないのだが(笑))
最初、ネットで上のを動かせるようにupして、
誰でも、自動的に「>」をブラウザ上でできるようにしようと思ったのだが、
たとえば、不特定多数の人が、JavaScriptで、無限にループさせられたり、
大量のテキストを流し込まれて、サーバーをダウンされるようなこともあるかなって思い、
そうするのを回避させるには、エラーチェックなどのところも作りこまないといけないので
それは作る時間は今ないので、個人のローカルで使えるレベルのだけを上にプログラムはりつけておきます~
さてさて、ネットスケープの2つがリリースされたが、
ネットスケープ、4.78がリリース
http://www.forest.impress.co.jp/article/2001/08/07/communicator478j.html
ネットスケープ6.1もリリース
http://www.forest.impress.co.jp/article/2001/08/09/netscape61j.html
なぜ、二つのブラウザをバージョンアップするのかちょっと疑問に思った。
ネットスケープ4×をバージョンアップするのなら、
6を出さなければよかったのに・・・
6.1だけリリースをするのならわかるんだけれど、
ネットスケープ4のバージョンアップがネットスケープ6ではなく
別々のブラウザとしてみているってことだよね。
Webクリエータにしてみると、両方のブラウザで動作確認をしなければいけないことが
増えるかもしれないめ、どっちかに統一してくれとは言いたい(笑)
(ユーザーから考えると、ネットスケープでお気に入りの方を使えばいいから
 好きなほうをバージョンアップすればいいのかもしれないけれど)

タイトルとURLをコピーしました