Perl use Sprite

提供: dococo wiki
2017年10月22日 (日) 13:15時点におけるimported>Webmasterによる版
ナビゲーションに移動 検索に移動

CSVのファイルをSQLコマンドを使って操作するためのモジュールです。
使い切っていないけど、巨大ファイルの操作ができるのか興味があったので使い方を勉強しています

インストール

標準モジュールでは無いので、CPANからインストールします。

プログラム例

一例ですけど、test.dbにテキスト形式で入っているデータに対して以下のSQLを発行させて、値が帰って来るというモジュールです。(SQLが大文字小文字メチャクチャですけど、これでもコマンドが通るということを言いたいのだと思います)
sElEcT * fRoM $database

wHeRe (Years  >= 10) and
         (Points >= 20) AnD
         (Championships >= 1)


	#厳密な構文チェックと警告表示
	use strict;
	use warnings;
	
	use Sprite;
	
	#実行中のファイルがおいてあるディレクトリまでの絶対パスを得る
	use FindBin;

	use Data::Dumper;

	##初期設定
	#$rdbを使ってデータベース操作を行います
	my $rdb = new Sprite;
	$rdb->set_os('Windows95');
	$rdb->set_db_dir($FindBin::Bin.'\\data\\');
	$rdb->set_delimiter ('-read'  => '\s{2,}|\t');#2回以上の「空白」繰り返しまたはタブにマッチ
	$rdb->set_delimiter ('-write' => '::');
	#初期設定ここまで

	my $database = "test.db";

print STDERR "Performing select ... \n";

	my $data = $rdb->sql (<<EOS);

    sElEcT * fRoM $database
    wHeRe (Years  >= 10) and
          (Points >= 20) AnD
          (Championships >= 1)


EOS

返り値

$dataに返り値が入るのですがイメージが全く分からずにdata dummperとかして解析しました。
2017-10-22 13-05-55.jpg
イメージはこんな感じのリファレンスのリファレンスになっていて、要素を参照しなければならないです。
今の段階では、SQLで打ち込んだ条件で値が返ってくるというレベルで考えておいてください。プログラム解説は別途行います。