The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

MooseX::Role::UpdateAttributes - Update attribute values

SYNOPSIS

        package Models::Person {
                use Moose;

                with 'MooseX::Role::UpdateAttributes';

                has 'name' => (
                        is => 'ro',
                        isa => 'Str',
                        required => 1
                );

                has 'age' => (
                        is => 'rw',
                        isa => 'Int',
                        required => 1
                );

                __PACKAGE__->meta()->make_immutable();
        }

        package main {

                my $person = Models::Person->new(
                        {
                                name => 'Bruce Wayne',
                                age => 30
                        }
                );

                $person->set_attributes(
                        name => 'Wally West',
                        age => 22,
                        dummy => 100,
                );

                $person->name(); # Still 'Bruce Wayne' because the name attribute is read-only

                $person->age(); # Is now set to 22
        }

DESCRIPTION

This role allow for setting the values for setting values on multiple writable accesors at once.

METHODS

set_attributes

        $instance->set_attributes( %data );

AUTHOR

Tudor Marghidanu <tudor@marghidanu.com>

SEE ALSO

LICENSE

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.