tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

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();

みたいな感じのファクトリメソッドは良く書いてた。基本的にはこれと同じだよね。