package Foo; use Moo; for my $access ( qw/ro rw/ ) { no strict 'refs'; *{'_has'.$access} = sub { has shift, 'is', $access, @_ } } _hasro([qw/ foo bar baz /]); _hasrw([qw/ quuux xyzzy /]); package main; print Foo->new(qw/foo 1 bar 2 baz 3 quuuz 4 xyzzy 5/)->xyzzy, "\n";