めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

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を触る前に、もうちょっと触ってみようと思います。

*1:SQL92について調べてみたんですが、現在のSQLのご先祖様のような印象を受けました。これが元になって、SQL99ができたよ〜、ということがかかれているサイトが多いです。