Dist-Zilla-PluginBundle-Author-GETTY
view release on metacpan or search on metacpan
.claude/skills/perl-moose/SKILL.md view on Meta::CPAN
```
Use `method` (not `sub`) inside `role { }` block. Non-core â adds `MooseX::Role::Parameterized` dependency.
---
## Pattern 7 â Attribute Options Cheatsheet
```perl
has name => (is => 'ro', required => 1);
has tags => (is => 'ro', isa => 'ArrayRef[Str]', default => sub { [] }); # ALWAYS coderef for refs
has content => (is => 'lazy'); # built on first access
sub _build_content { "generated: " . $_[0]->name }
has status => (
is => 'rw',
isa => 'Str',
trigger => sub { # fires on new() and set
my ($self, $new, $old) = @_; # $old is undef on construction
die "bad status" unless $new =~ /\A(new|ok|done)\z/;
},
.claude/skills/perl-moose/SKILL.md view on Meta::CPAN
where { $_ > 0 },
message { "$_ is not a positive integer" };
coerce 'PositiveInt',
from 'Str',
via { int($_) };
# Or use Type::Tiny (recommended â works with both Moo and Moose):
use Types::Standard qw(Str Int ArrayRef InstanceOf);
has name => (is => 'ro', isa => Str);
has items => (is => 'ro', isa => ArrayRef[Str], default => sub { [] });
```
Prefer `Type::Tiny` / `Types::Standard` â portable between Moo and Moose, better error messages.
---
## Decision Guide
| Situation | Use |
|---|---|
( run in 1.462 second using v1.01-cache-2.11-cpan-39bf76dae61 )