Perl DATABASEはPerlで作成された、データベースライブラリです。あなたが使っているWEBサーバーにデータベースを簡単に作成できます。いままで面倒だったファイルのロックや、追加、検索、削除が簡単に行えます。
UNIXのPerlはもちろんのこと、ActivePerl For Win32でも動作します。OS依存もまったくなく、WIN95/98/NT/2000、UNIX、LINUXすべて動作します。又、特定のライブラリを必要とすることもなく、一般的なPERLがインストールされているサーバー(プロバイダ)で稼動します。PERL DATABASEは完全OPENデータベースです(全てテストしたわけではありませんが・・・)
1. insert,update,delete,selectなどなど、データ管理を簡単に行えます!
2. すべてのwwwサーバー(perl5含む)で稼動します。(すると思います.^ ^)
3. これを使えば、掲示板、サーチエンジン、チャット、アンケート等のデータ管理を簡単に行えます。
4. 完全ロック方式を採用しているので排他処理(ファイルのロック)が不要です。
ファイル名 内容
1 lib/perl.pl PERL DATABASEプログラム
2 how.htm このファイル
3 sample/bbs.cgi サンプル掲示板
4 sample/chat.cgi サンプルチャット
5 sample/serche.cgi サンプルサーチエンジン
6 sample/test.cgi 動作確認用サンプルスクリプト
7 dbdata データ出力フォルダ
8 lib/jcode.pl 日本語変換ライブラリ
public_html / index.html (ホームページなど)
|
+-- cgi-bin / how.htm
| ref.htm
|
+-- lib / perldb.pl
| jcode.pl
|
+-- sample / searche.cgi [705 or 775]
| bbs.cgi [705 or 775]
| chat.cgi [705 or 775]
| test.cgi [705 or 775]
|
+-- dbdata / [707 or 777]
cgi-bin/dbdata フォルダは必ず作成し、パーミッション[707]を設定してください
設置方法に付きましては、ご使用のサーバー管理者にお問い合わせください
perldb.plの以下の部分を変更して下さい。
# Config
$d_timeout=60 * 10; # seconds, For example 600 is 10 min.
$d_DEBUG="FALSE"; # TRUE or FALSE
$d_doc="cgi"; # データファイルの拡張子
$d_timeout
ロックの制限時間です。デフォルトは60×10=600秒=10分です。10分間ロックされていると自動的にロック解除されます。
$d_DEBUG
ログの出力をする場合は、TRUEを設定してください。dbdataフォルダ内にlog.txtファイルが作成されます。snap関数を使用する場合にもTRUEにしてください。
$d_doc
データファイルの拡張子です。デフォルトでは"cgi"を使用しています。
(※ サンプルプログラムを動かす場合は変更しないで下さい)
以下のプログラムを参照して下さい。
Sample
require "lib/perldb.pl"; ## データベースファイルの宣言
$sdb = perldb->new(""); ## データベースの初期化
## データの作成
$rec = "これはテストです<>This is test<>sajiro<>bigfoot.com<>";
$sdb->insert( "table", "$rec" ); ## データの登録
$sdb->commit(); ## この時点でデータは正式に登録されます
## 登録したデータを抽出する
@dat=$sdb->select( "table", "3 eq sajiro" );
foreach(@dat){
## 抽出したデータを分割する。
($no,$japan,$english,$name,$domain) = split( /<>/ ,$_ );
## 分割したデータを表示する。
print "$no,$japan,$english,$name,$domain\n";
## このように表示されます
## --> 1,これはテストです,This is test,sajiro,bigfoot.com
}
## 抽出したデータの削除
@dat=$sdb->delete( "table", "3 eq sajiro" );
foreach(@dat){
print "$_"; ## 削除したデータの表示
}
new関数によってデータベースは初期化されます。
new関数で獲得したデータから他の全ての関数を呼び出します。
(呼び出し方法は他にもありますが、動作確認をしたのは上記の方法です)
以下のプログラムを参照して下さい。(ちょっと日記プログラム)
Sample
require "lib/perl.pl"; ## データベースファイルの宣言
$sdb = perl->new(""); ## データベースの初期化
if($FORM{'commect'} ne ""){ ## コメントが入っていたら
## 二重登録の防止、同じコメントは削除
@dat=$sdb->delete("table","2 eq $FORM{'commect'}");
if($#dat >= 0){ ## データがある時
$sdb->rollback; ## 重複データはエラー
exit;
}
## 日付とコメントの追加
$sdb->insert("table","$date<>$FORM{'commect'});
## 新しい順にソートして先頭の30件以降はoldに移動する
$sdb->movetable("table","old","0 sort down","under max 30");
## 古いデータは100件残して、削除する。
$sdb->delete("old","0 sort down","under max 100");
## 変更結果を反映する
$sdb->commit;
}
## tableから、先頭の30件を取り出す
@dat = $sdb->select("table","0 sort up","upper max 30")
foreach(@dat){
## データを区切り文字で区切る
($no,$date,$commect)=split(/<>/,$_);
## データを表示する
print "$no,$date,$commect";
}
insert,update,delete,selectForUpdate等により、変更されたデータはCommitにより変更が確定され、Rollbackによって変更をキャンセルすることが出来ます。
以下のプログラムを参照して下さい。
Sample
## 項目の1番目に「a」、2番目に「b」、3番目に「c」を設定します。
$sdb->insert("table","a<>b<>c<>");
## 登録したデータを取り出します。
@dat=$sdb->select("table");
($p0,$p1,$p2,$p3)=$dat[0];
print "$p0,$p1,$p2,$p3";
## 表示結果は、「2,a,b,c]になります。
insertしたデータの先頭にプライマリーキーが追加されます。プライマリーキーは最長15桁の数値です。
## データを抽出する際は、データの番号に注意しましょう。
$sdb->select("table","1 eq a");
項目番号1が「a」のデータを抽出します。項目番号は、プライマリーキーが「0(ゼロ)」、以降1、2、3?と増えていきます。
## bのデータを探す場合は、以下のように呼び出します。
$sdb->select("table","2 eq b");
## プライマリーキーを昇順でsortする場合は、以下のように呼び出します。
$sdb->select("table","0 sort up");