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';
- tie関数でハッシュ変数(%expression)を使用する際に内部的なトリガーにTie::Expressionクラスを結合(tie)する。
- Tie::Expressionクラスは、tie関数ハッシュ変数専用のクラス(TIEHASHやFETCH等がある)
モジュールソース説明
- package Tie::Expression;
- パッケージ名(名前空間)宣言。
- use warnings;
- 最近のPerlのお約束事その1。
- 参考リンクhttp://d.hatena.ne.jp/chaichanPaPa/20080621/1214041453
- use strict;
- 最近のPerlのお約束事その2。
- 参考リンク:http://chaichan.lolipop.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] }
- 1;
- モジュールのお約束事(真値を返す)
尚、tie関数に関しては、後日、別途説明したいと思います。