$ perl -Moose -e'has a=>(is=>"rw",isa=>"Undef",coerce=>1); __PACKAGE__->new(a=>"abc")' Attribute (a) does not pass the type constraint because: Validation failed for 'Undef' failed with value abc at [snip backtrace] $ perl -Moose -e'has a=>(is=>"rw",isa=>"Undef|Undef",coerce=>1); __PACKAGE__->new(a=>"abc")' $ perl -Moose -e'has a=>(is=>"rw",isa=>"Undef|Undef",coerce=>0); __PACKAGE__->new(a=>"abc")' Attribute (a) does not pass the type constraint because: Validation failed for 'Undef|Undef' failed with value abc at [snip backtrace]