=head1 スクリプト名 rakumemo.cgi - Rakucopyを使ってクリップボードからメモを取得する仕組み =head2 概要 Rakucopyをインストールしている Internet Explorer で、URL、タイトル、選択部分をクリップボードに転送した後、クリップボードから文字列を取得して、内容をキーにして DBM データベースに格納する。DBMデータベースからの読取は memol_edit.cgi で行う。 =cut use Win32::Clipboard; # 環境変数の取得 $cgidir = $ENV{'CGIDIR'};# CGI 格納ディレクトリの相対パス取得 # CGI の先頭部分出力 print < Clipmemo
Rakucopyクリップメモ
HEADER # クリップボードの文字列を取得する $CLIP = Win32::Clipboard(); $clipstr = $CLIP->Get(); # Rakucopyクリップボード文字列から取得する文字列の改行は CRLF である @content = split(/\r\n/, $clipstr); # クリップボードからのメモを DBM データベースに格納する dbmopen %CLIPMEMO, 'clipmemo', 0666; # クリップボードのタイトルの取得 $CLIPMEMO{'title'} = shift(@content); # クリップボードの URL の取得 $CLIPMEMO{'url'} = shift(@content); # クリップボードの引用部分の取得 $citation = join("\n",@content); # DBM への入力文字列のサイズをトータル1008バイト以下に抑える。 if(length($citation) > 992){ chop($citation = substr($citation, 0, 898)); $citation =~ s/...$/・・・/; } $citelen = length($citation); $CLIPMEMO{'cite'} = $citation; # URL メモがあれば、クリップメモに出力 if($CLIPMEMO{'url'}){ print "

URL: $CLIPMEMO{'url'}

\n"; } # タイトルメモがあれば、クリップメモに出力 if($CLIPMEMO{'title'}){ $CLIPMEMO{'title'} =~ s/\n+/ /g; print "

タイトル: $CLIPMEMO{'title'}

\n"; } # 引用メモがあれば、クリップメモに出力 if($CLIPMEMO{'cite'}){ print "

引用: $citelen バイト

"; @pgs = split(/\n+/, $CLIPMEMO{'cite'}); foreach $pg (@pgs){ print "$pg
\n"; } } # クリップメモがない場合のエラーメッセージ if((scalar keys %CLIPMEMO) == 0){ print "

クリップメモがありません。

"; } # クリップメモ用 DBM データベースを閉じる dbmclose %CLIPMEMO; # CGI 最終部分出力 # memol_edit.cgi へのデータの受け渡しは DBM データベース経由で行う print <メモ作成 FOOTER