The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.