こんな書き方もできるんだ
今日、後輩のPerlコードをレビューしていたのですが、おや、と思うような書き方を見つけました。
package Foo; sub hoge { my ($self, $bar) = @_; baz->($self, $bar); # こんな書き方できるの? } sub baz { my ($self, $bar) = @_; }
$self->baz($bar) とかくのが普通だと思いますし、baz($self, $bar) というのも、まあ使えることは理解できます。
baz->($self, $bar) って何だろう…。普通に動いていましたが。
(\&baz)->($self, $bar);
と書かれれば、これもまた、動き自体は理解できます。
"baz"->($self, $bar);
あるいは、上記のように、文字列を書いてくれれば、確かにPerlのメソッドってコードリファレンスじゃなくて文字列でも動くよなと思いながら、納得します。
でも、barewordだと、「お!」と驚いてしまった。
奥が深いのか、あるいは私が無知なのか。
そんなことを思いながら、老害として「こんな書き方をするんじゃない」という訂正指示を出しました。