2008年07月02日 03:00 [Edit]
perl - Tie::Expression - Let any %hash interpolate any expression.
今まで私がCPANizeしたモジュールの中で、最も短いかも。
404 Blog Not Found:perl - qq(@{[ Interpolate->any->given('expression') ]})
spiritlooseのはてなダイアリー - 文字列中で式を実行結果はprint "@{[$foo->bar]}"; print "${\$foo->bar}";こんな感じ。
これじゃかっこいくないので。
というわけで、こうです。
use Tie::Expression;
tie my %expression, 'Tie::Expression';
print "PI = $expression{ 4 * atan2(1,1) }.\n";
仕組みは、呆れるほど簡単です。これしかない。
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;
同封のPercent::Underscoreを使えば、さらに手軽です。
use Percent::Underscore;
print "PI = $_{ 4 * atan2(1,1) }.\n";
Rubyの#{ ... }よりたった一文字長くなりますが、それを言えばPerlはsigilで必ず一文字損してますし。
Enjoy!
Dan the Perl Monger
Posted by dankogai at 03:00│Comments(1)│TrackBack(1)
この記事へのトラックバックURL
この記事へのトラックバック
Tie::Expressionモジュールは、文字列中で式を実行したい時に使えます。 http://blog.livedoor.jp/dankogai/archives/51074461.html 小飼氏は『仕組みは、呆れるほど簡単です。』との事でしたが・・・私にとっては、呆れるほど難しいかったので調べてみました。 モジュール
[Perlノート] Tie::Expressionモジュールの私的説明メモ【燈明日記】at 2008年07月02日 22:53
この記事へのコメント
$VERSIONはその書き方がおしゃれなんでしょうか?
Posted by hassylin at 2008年07月03日 19:32