文字列中で式を実行

my $foo = Foo->new;
print "$foo->bar"; # NG!

みたいなことをしたいことが何回かあって(楽したいがために)、いままで我慢して外に出してたけど、調べることにした。


結果は

print "@{[$foo->bar]}";
print "${\$foo->bar}";

こんな感じ。

無名リファレンスを作ってデリファレンスすることで実現している。


下のは返す値がスカラーに限定されるが、上の方は多分何でも(試してないけど)大丈夫。


まぁ普段はつかわんな・・・