値がリファレンスのメンバ変数を Moose で使う

初めは

package ClassA;
use Moose;

has class_variable => (
  is      => 'ro',
  isa     => 'ArrayRef',
  default => [qw/hoge fuga foo bar/]
);

と書いたけれど、

you must wrap the default of class_variable in a CODE reference (ex: sub { [] } and not [])

とか言われる。

というわけで、

package ClassA;
use Moose;

has class_variable => (
  is      => 'ro',
  isa     => 'ArrayRef',
  default => sub { [qw/hoge fuga foo bar/] }
);

とする。
array ref を返す無名関数を書けばいいようだ。
以前も同じところでハマったのでメモ。

普通は前者で書いてしまうよなあ。