NAME Class::Tiny::Immutable - Minimalist class construction, with read-only attributes SYNOPSIS In Person.pm: package Person; use Class::Tiny::Immutable qw( name ); 1; In Employee.pm: package Employee; use parent 'Person'; use Class::Tiny::Immutable qw( ssn ), { timestamp => sub { time } # lazy attribute with default }; 1; In example.pl: use Employee; my $obj = Employee->new; # dies, name and ssn attributes are required my $obj = Employee->new( name => "Larry", ssn => "111-22-3333" ); my $name = $obj->name; my $timestamp = $obj->timestamp; # no attributes can be set $obj->ssn("222-33-4444"); # dies $obj->timestamp(time); # dies DESCRIPTION Class::Tiny::Immutable is a wrapper around Class::Tiny which makes the generated attributes read-only, and required to be set in the object constructor if they do not have a lazy default defined. In other words, attributes are either "lazy" or "required". METHODS In addition to methods inherited from Class::Tiny, Class::Tiny::Immutable defines the following additional introspection method: get_all_required_attributes_for my @required = Class::Tiny::Immutable->get_all_required_attributes_for($class); Returns an unsorted list of required attributes known to Class::Tiny::Immutable for a class and its superclasses. BUGS Report any issues on the public bugtracker. AUTHOR Dan Book <dbook@cpan.org> COPYRIGHT AND LICENSE This software is Copyright (c) 2017 by Dan Book. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible) SEE ALSO Moo, MooseX::AttributeShortcuts