ごあいさつ
2008/7/2(水)
■[Perlノート] Tie::Expressionモジュールの私的説明メモ
Tie::Expressionモジュールは、文字列中で式を実行したい時に使えます。
小飼氏は『仕組みは、呆れるほど簡単です。』との事でしたが・・・私にとっては、呆れるほど難しいかったので調べてみました。
モジュール使用例ソース
use Tie::Expression;
tie my %expression, 'Tie::Expression';
print "PI = $expression{ 4 * atan2(1,1) }.\n";
http://blog.livedoor.jp/dankogai/archives/51074461.html
モジュールソース
package Tie::Expression;
use warnings;
use strict;
our $VERSION = sprintf "%d.%02d", q$Revision: 0.1 $ =~ /(\d+)/g;
sub TIEHASH($) { bless \eval { my $scalar }, shift }
sub FETCH($$) { $_[1] }
1;
http://blog.livedoor.jp/dankogai/archives/51074461.html
モジュール使用例ソース説明
- use Tie::Expression;
- モジュール「Tie::Expression」を使用(インポート)する。
- 「Tie::Expression」は、TieフォルダにあるExpression.pmのこと。
- tie my %expression, 'Tie::Expression';
モジュールソース説明
- package Tie::Expression;
- パッケージ名(名前空間)宣言。
- use warnings;
- 最近のPerlのお約束事その1。
- 参考リンクhttp://d.hatena.ne.jp/chaichanPaPa/20080621/1214041453
- use strict;
- 最近のPerlのお約束事その2。
- 参考リンク:http://chaichan.web.infoseek.co.jp/perlnote/perlnote2007-05-282.htm
- our $VERSION = sprintf "%d.%02d", q$Revision: 0.1 $ =~ /(\d+)/g;
- パッケージバージョンのお約束?(実処理には影響しない?)
- ちなみに、コマンドラインから以下のコマンドで、$VERSIONの値が取得できる。
- D:\test>Perl -MTie::Expression -e "print $Tie::Expression::VERSION"
- WINDOWSのコマンドプロンプトでは、なぜかシングルクォートはNG。
- しかし、なぜ、our $VERSION = '0.01'; と素直に書かない?
- ちなみに、q$Revision: 0.1 $は、qのあとにスカラー変数があるのでなく、'Revision: 0.1 'の文字列と等価。
- そして、q$Revision: 0.1 $ =~ /(\d+)/g; が評価されると、真理値でなく、マッチ文字列が返る?
- またちなみに、(\d+)の小括弧は、無くても大丈夫みたい?
- sub TIEHASH($) { bless \eval { my $scalar }, shift }
- sub FETCH($$) { $_[1] }
- 本関数は、tieした変数が使用されるときに起動される。
- FETCH($$)の$$は、プロトタイプ指定で、スカラー引数が2つの場合。
- 1つ目の引数($_[0])は、TIEHASHでコンストラクタされたオブジェクトが渡される。
- 2つ目の引数($_[1])は、4 * atan2(1,1)で計算された3.14159265358979が渡される。
- そして、2つ目の引数をそのまま、リターン値としている。
- 1;
- モジュールのお約束事(真値を返す)
尚、tie関数に関しては、後日、別途説明したいと思います。
トラックバック - http://d.hatena.ne.jp/chaichanPaPa/20080702/1214998146
リンク元
- 36 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4DBJP_jaJP269JP269&q=perl+@_
- 27 http://blog.livedoor.jp/dankogai/archives/51074461.html
- 18 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=perl+and+or+&&+||&num=50
- 13 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&hs=9c0&q=ファイル+存在チェック&btnG=検索&lr=lang_ja
- 13 http://www.google.co.jp/search?sourceid=navclient&aq=t&hl=ja&ie=UTF-8&rlz=1T4DBJP_jaJP264JP264&q=java+文字列 抽出 正規表現
- 5 http://www.google.co.jp/search?hl=ja&q=問題が発生したため&btnG=検索&lr=lang_ja
- 4 http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla:ja:official&hs=yBj&q=html+javascript+引数 文字列 渡し&btnG=検索&lr=lang_ja
- 4 http://www.google.com/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=DAJP,DAJP:2006-44,DAJP:ja&q=vbscript+Dir
- 4 http://www1.parkcity.ne.jp/chaichan/chai.htm
- 3 http://209.85.175.104/search?q=cache:6pqJHj8bYM8J:d.hatena.ne.jp/chaichanPaPa/20070320/1174390395+龍医院&hl=ja&ct=clnk&cd=8&gl=jp

