■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■               CGI3分クッキング                                  Vol:031                          発行日: 1999年10月26日                        総発行部数:     1500部                            (1999年10月25日現在) ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆PR◆-------------------------------------------------------------------- ●おいしいお肉でお馴染の「いづつ屋」では、  只今100名様限定キャンペーン中。  牛タンのみそ漬けを1000円にてご奉仕中!  めちゃくちゃ美味しいお肉を、是非ご賞味下さいませ。  http://www.tanba-izutsuya.com/ --------------------------------------------------------------------◆PR◆ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆目次◆ ●Web新撰組ニュース ●今日の献立:体験SQL ●予告 ●はぎちゃん今日のひとこと ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆PR◆-------------------------------------------------------------------- ●2000年カウントダウンプレゼントキャンペーン実施中● もれなくスカパーまでついてきちゃうお特なプレゼントキャンペーン。 click< http://a.clickincome.net/md/dk?mid=6fc708378f23b98c8eef56e8f0aa8343 > --------------------------------------------------------------------◆PR◆ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ●Web新撰組ニュース   メールを使った新しい遊びを追及する「メールで遊ぼう!」。   めでたく会員数2000名を突破致しました。   現在新機能をプログラム中。未だ会員登録されてない方は、   http://www.web-kyoto.com/vmail/   へGO!   Web新撰組メンバー執筆のCGI参考書。   「Perlで作る楽しいCGI」は、エーアイ出版のエーアイムックNo.237。   内容についての御質問は、新撰組ML(http://www.web-kyoto.com/ml/)へ。 ●今日の献立:体験SQL   今回は、お手軽にSQL言語で遊べる方法のお話しです。   さてさて、前回SQL言語のお話しをちらっとしましたが、これは、SQLを理解 するデータベースエンジンがあってこそ使えるわけです。   しかしながら、ごく普通のプロバイダの場合、データベースエンジンまで用意 してくれている所は殆どありません(というか、私は知りませぬ)。   そこで、SQLのお勉強にぴったりのPerl5モジュール、Spriteを使いましょう。   Spriteは、データベースエンジンを使わずにSQL言語を使ってデータを操作する 為のモジュールです。   お勉強にぴったり、と云っても、ちゃんと実用にも耐えられる素晴らしいもの です。   Spriteは、CPANで手に入ります。   ftp://ftp.labkdd.co.jp/CPAN/modules/by-module/Sprite/   が、繋がりやすくてお勧めです。   現在のバージョンは、Sprite-3.21ですが、使い方がよくわかんなかったので、 Sprite-3.1で説明致します(うう〜〜いい加減だなぁ。。。あ、上記サイトには、 Sprite-3.1もあるので御心配なく)。 ・Spriteのインストール   CPANサイトから、Sprite-3.1.tar.gzをダウンロードします。  a:プロバイダ上で使う場合   プロバイダ上で使う場合は、これをプロバイダ上のホームディレクトリにアッ プして下さい。   telnetでログインし、   tar xvfz Sprite-3.1.tar.gz   (GNUtarがgtarの場合は、gtar xvfz Sprite-3.1.tar.gz )   GNUtarがない場合は、   zcat Sprite-3.1.tar.gz | tar xvfz -   (GNUzcatがgzcatの場合は、gzcat Sprite-3.1.tar.gz | tar xvfz -)   でSprite-3.1ディレクトリに解凍されます。   cd Sprite-3.1でSprite-3.1ディレクトリに移動し、   mv Sprite.pm ~/public_html/cgi-bin   等のようにして、cgiを置いているディレクトリに放り込みます。他のファイル は不要ですので、cdでホームディレクトリに戻って、rm -rf Sprite-3.1でディレク トリごと消去します。  b:自分のUNIXサーバーに入れる場合   aと同じように解凍し、   Perl Makefile.PL   make   su   make install   でPerlライブラリのディレクトリにインストールされます。 ・ちょいと使ってみましょう   Spriteのデータは、カンマ(,)等で区切られたプレーンテキストファイルです。   試しに、こんなデータファイルを作ってみましょう。ファイル名は、phone.db とします。また、必ずEUCコードで書いて下さい。 name,age,phone,note はぎちゃん,36,0901111111111,かっちょいい 鷹,36,090222222222222,かっちょわるい   最初の行にはカラム名を書きます。区切り記号(delimiter)はカンマ(,)にし ました。   では、このデータファイルからデータを検索するスクリプトを書いてみます。 ファイル名は、test.plとします。   例によって先頭の数字:は行番号ですので、実際には入力しないで下さい。 -------------------------------------------------- 1:#!/usr/local/bin/perl 2: 3:use Sprite; 4: 5:$query = $ARGV[0]; 6: 7:$rdb = new Sprite; 8:$rdb->set_os ('UNIX'); 9:$rdb->set_delimiter('Read',','); 10: 11:@data = $rdb->sql("$query"); 12: 13:$status=shift(@data); 14: 15: 16:if($status == 1){ 17: foreach $line (@data) { 18: $line =~ s/\0/\,/g; 19: print $line,"\n"; 20: } 21:}else{ 22 print 'error',"\n"; 23:} 24:$rdb->close(); 25: 26:exit; --------------------------------------------------   chmod 755 test1.pl でパーミッションを755にします。   では、このスクリプトを試してみましょう。   ./test1.pl "select * from phone.db where (name = 'はぎちゃん')"   結果は、 はぎちゃん,36,0901111111111,かっちょいい   となります。   (name = 'はぎちゃん')の部分が検索条件です。'はぎちゃん'のように文字列 を使う場合は' 'で囲んで下さい。数字の場合は' 'は不要です。   ./test1.pl "select * from phone.db where (age = 36)"   結果は、 はぎちゃん,36,0901111111111,かっちょいい 鷹,36,090222222222222,かっちょわるい   になります(2人ともageが36なので)。   検索条件には、正規表現も使用可能です。   ./test1.pl "select * from phone.db where (note =~ /わるい/)"   結果は、 鷹,36,090222222222222,かっちょわるい   となります(noteに「わるい」が含まれているので)   てな具合に、これで結構遊べます。 □おまけ□□□□□   Spriteは、データベースエンジンを使わずにPerlでSQL言語を使うためのモ ジュールです。よって、スピードなんぞは、一般のデータベースに比べて遅くなり ます。   しかし、SpriteでPerlスクリプトを作っておけば、新たにデータベースエンジ ンを手に入れた場合に、スクリプトをちょこっと書き直すだけで済むので便利です し、SQLのお勉強にもなるでしょう。   俺は何をやっているのか・・という不安を抱きつつ、続く ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆予告◆------------------------------------------------------------------ ●次回は、「熱血・検索くん」です。  (がが〜〜ん、、今回も「熱血・検索くん」の名が全然出てこなかったぞ・・・) ------------------------------------------------------------------◆予告◆ ◆PR◆--------------------------------------------------------------------      ◆◆WAKWAKで、世界のFM局を聴いてみよう!◆◆ 24Hリアルタイムで配信中!あなたのPCをインターナショナルFMラジオに! click< http://a.clickincome.net/md/dk?mid=8815f79f886b213e1afb12c79fd8be88 > やりたいって言ったら、今すぐやりたいんだい!! いや〜んえっちぃ〜〜、、、じゃないよ、ゲームのお話し。 欲しいソフトが発売日に手元に届きます。こりゃええわい。 てなわけで、こちらにどうぞ。 http://takafumi.grabit.net/powersoft/ --------------------------------------------------------------------◆PR◆ このメールマガジンは、 Subject部が、CGI3分クッキング【Vol.番号】は、まぐまぐ様にて、 ( http://www.mag2.com/ ) Subject部が、CGI3分クッキング Vol.【番号】は、Macky様にて、 ( http://macky.nifty.ne.jp/ ) Subject部が、CGI3分クッキング番号 は、Pubzine様にて、 配布致しています。 メールマガジンの解除について まぐまぐ様の解除は、 http://www.web-kyoto.com/dp/3min/ に、削除及び登録フォームを用意致しております。 Macky様の解除は、 http://macky.nifty.ne.jp/ を参考して下さい。 Pubzine様の解除は、 http://www.pubzine.com/srchid.asp?keyword=1379 に、削除及び登録フォームを用意致しております。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆はぎちゃん今日のひとこと◆------------------------------------------  ●寒い・・・   で、石油ファンヒーターを買ってきました。   でも灯油がないです。 ------------------------------------------◆はぎちゃん今日のひとこと◆ ◆お願い◆ このマガジンについてのお問い合わせは、WEB新撰組メーリングリストで、 お願い致します。 はぎちゃんについて、麗しいお嬢様からのお問い合わせもお待ちしております。 参加方法は、 http://www.web-kyoto.com/ml/ を参考にして下さい。 ◆担当者◆ 本文文責    :Web新撰組プログラマー萩原逸郎 Web新撰組  :http://www.web-kyoto.com/ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■