Maybeを知った。
package Test; use Mouse; has hoge => ( is => 'rw', isa => 'Str', ); package main; my $test = Test->new; $test->hoge( undef );
こんな感じで、isaでStrを指定したアトリビュートにundefを書き込もうとすると怒られる。
理由は簡単で、Str型は文字列ではないundefを書き込むことができないというだけ。
これを知らなかった。勉強不足ですね。
文字列とundefも入れたいという場合は、以下のようにMaybeを使うといい。
has hoge => ( is => 'rw', isa => 'Maybe[Str]', );