Sprite.pm(2)
9月に更新情報を表示させるCGI(Perl)を4つほど、いじっていました。作成やメンテナンスをしていて感じたのはデータの扱いが面倒。
「DBというか、SQLならデータの取り扱いが楽になるんじゃないの?」
という疑問がありつつも、そんなに複雑なことをしているわけではなかったので、自作したりしていました。が、仕様変更の嵐が吹き荒れ、そのたびにいじるのが面倒だったのです。そこで、思ったのは以下のとおり
- MySQLや、PostgreSQLを契約していなくても使えるDBがないだろうか?(Berkeley DBというのも無し)
- 画像などを取り扱うことがないわけじゃないけれど、とりあえず使えなくてもいい
- お手軽に使える(ファイルコピー、FTPアップでレンタルサーバで使える率が高いもの)
ということを思いました。
ここで、以前社内にいた人が使っていたのが、「Sprite.pm」でした。これがよくわからないなあ、と放置気味だったのです。そこで、この際なので調べてみようと思ったのです。
そこで試しに実行してみました。
test.pl
use Sprite;
use Data::Dumper;my $rdb = new Sprite;
$rdb->set_delimiter (-Read => '::'); #区切り線を設定(自由に設定できるっぽい)
$rdb->set_delimiter (-Write => '::'); #区切り線を設定(自由に設定できるっぽい)
$rdb->set_os ('WinNT'); #OS?なくても動く?
$rdb->set_db_dir('./'); #DBファイルの在り処#DB?テーブル?
my $db_file = 'db.txt';my $data = $rdb->sql(<
select * from $db_file; #使えるSQLは「SQL-92*1」となっています。
Query
$rdb->close($db_file); #dbを閉じるprint Dumper( @{$data} );
db.txt
id::name::address
1::d4-1977::帯広市
2::d4-1977::京都市
実行結果
$VAR1 = 1; #たぶん、実行結果 Return Value 1 - Success 0 - Error かな?
$VAR2 = [ '1', 'd4-1977', '帯広市' ];
$VAR3 = [ '2', 'd4-1977', '京都市' ];
となります。
まあ、なんですか、予想通り。MySQLを触る前に、もうちょっと触ってみようと思います。