#!/usr/bin/perl # スクリプト名 $script = './n031210a.cgi'; # 文字コード $code = 'EUC-JP'; $src = &decode; $result = &conv($src); &html($src,$result); exit; #------------------# # 引用部変換処理 # #------------------# sub conv { my $input = $_[0]; my $output = $input; $output =~ s/(^|br>)(> .*?)(
[^>]|$)/$1$2<\/font>$3/g; return ($output); } #------------# # html表示 # #------------# sub html { my ($before,$after) = @_; if (!$before) { $before = '行頭の "> " が引用符。例えば
> この文章が引用部。
引用部の開始判定は、
・コメントの先頭に "> "
・改行の後に "> "
で行なう。
終了判定は、
・改行の後が ">" でない(行頭が引用符でない行が出現)
・コメントの末端
で行なう。

したがって、
> 連続した
> 引用部

> 一行開けて引用部
さらに通常部。などとしても判定可能。

> 一行開けて引用部で終了。'; } print "Content-type: text/html; charset=$code\n\n"; print <<"EOM"; 引用文字列判定実証スクリプト

引用文字列判定実証スクリプト

正規表\現

s/(^|br>)(> .*?)(<br>[^>]|\$)/\$1<font color="green">\$2<\\/font>\$3/g;

EOM if ($after) { print "

変換結果

\n
$after
\n
\n"; } $before =~ s/
/\n/g; print <<"EOM";

変換元

変換フォーム

EOM } #----------------# # デコード処理 # #----------------# sub decode { my ($name,$value) = (); ($name,$value) = split(/=/,$ENV{'QUERY_STRING'}); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 改行等処理 $value =~ s/\r\n/
/g; $value =~ s/\r/
/g; $value =~ s/\n/
/g; return ($value); }