$ perl -wE 'package Foo { use Moo; has bar => (is => "rw", isa => sub { die "invalid" unless shift =~ /^[a-z]+$/ }) }; my $o = Foo->new(bar => "baz"); $o->bar("qux"); say $o->bar; $o->bar(42)' qux isa check for "bar" failed: invalid at -e line 1.