no strict 'refs'じゃないとできないと思ってた
今日、ちょっとだけビックリしたことメモ。
#!/usr/bin/perl use strict; use warnings; sub aa { print "aa\n"; } 'aa'->();
こんなの書いて、実行すると、ふつうに
tsucchi@vogue[512]$ perl a.pl aa
こんな感じで実行できる。表題のとおり、no strict 'refs' じゃないとできないと思い込んでた。
けど、冷静に考えたら、
my %class_for = ( aaa => 'MyProj::aaa', bbb => 'MyProj::bbb', ); my $class = $class_for{$some_key}; $class->create();
みたいな感じのファクトリメソッドは良く書いてた。基本的にはこれと同じだよね。