Tie::Moose - tie a hash to a Moose object (yeah, like Tie::MooseObject)
use v5.14; package Person { use Moose; has name => ( is => "rw", isa => "Str", ); has age => ( is => "rw", isa => "Num", reader => "get_age", writer => "set_age", ); } my $bob = Person->new(name => "Robert"); tie my %bob, "Tie::Moose", $bob; $bob{age} = 32; # calls the "set_age" method $bob{age} = "x"; # would croak $bob{xyz} = "x"; # would croak
This module is much like Tie::MooseObject. It ties a hash to an instance of a Moose-based class, allowing you to access attributes as hash keys. It uses the accessors provided by Moose, and thus honours read-only attributes, type constraints and coercions, triggers, etc.
There are a few key differences with Tie::MooseObject:
It handles differently named getters/setters more to my liking. Given the example in the SYNOPSIS, with Tie::MooseObject you need to write:
$bob{set_age} = 32; say $bob{get_age};
Whereas with Tie::Moose, you just use the age hash key for both fetching from and storing to the hash.
age
Implements DELETE from the Tie::Hash interface. Tie::MooseObject does not allow keys to be deleted from its hashes.
DELETE
(DELETE only works on Moose attributes that have a "clearer" method.)
Supplied with various traits to influence the behaviour of the tied hash.
tie my %bob, "Tie::Moose"->with_traits("ReadOnly"), $bob;
(Note that by design, many of the traits supplied with Tie::Moose are mutually exclusive.)
Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Tie-Moose.
Tie::MooseObject.
Traits for Tie::Moose hashes: Tie::Moose::ReadOnly, Tie::Moose::Forgiving, Tie::Moose::FallbackHash, Tie::Moose::FallbackSlot.
Toby Inkster <tobyink@cpan.org>.
This software is copyright (c) 2013 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
To install Tie::Moose, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Tie::Moose
CPAN shell
perl -MCPAN -e shell install Tie::Moose
For more information on module installation, please visit the detailed CPAN module installation guide.