NAME
MooseX::Lists - treat arrays and hashes as lists
SYNOPSIS
package Stuff;
use Moose;
use MooseX::Lists;
has_list a => ( is => 'rw', isa => 'Array');
has_list h => ( is => 'rw', isa => 'Hash' );
has_list same_as_a => ( is => 'rw' );
...
my $s = Stuff-> new(
a => [1,2,3],
h => { a => 1, b => 2 }
);
my @list = $s-> a; # ( 1 2 3 )
my $scalar = $s-> a; # [ 1 2 3 ]
$s-> a(1,2,3); # 1 2 3
$s-> a([1,2,3]); # 1 2 3
$s-> a([]); # empty array
$s-> a([[]]); # []
my %list = $s-> h; # ( a => 1, b => 2 )
my $sc = $s-> h; # { a => 1, b => 2 }
$s-> h(1,2,3,4); # 1 2 3 4
$s-> h({1,2,3,4}); # 1 2 3 4
$s-> h({}); # empty hash
DESCRIPTION
Provides asymmetric list access for arrays and hashes.
METHODS
has_list
Replacement for "has", with exactly same syntax, expect for "isa",
which can be either "Array" or "Hash". "[]" notation is not
supported.
When a method is declared with "has_list", internally it is a normal
perl array or hash (Moose's "ArrayRef" and "HashRef" don't apply).
The method behaves differently if called in scalar or list context.
See below for details.
Array
In get-mode, behaves like "auto_deref": in scalar context, returns
direct reference to the array, list context, returns defereenced
array.
In set-mode behaves asymmetrically: if passed one argument, and this
argument is an arrayref, treats it as an arrayref, otherwise
dereferences the arguments and creates a new arrayref, which is
stored internally. I.e. the only way to clear the array is to call "
-"method([]) >.
Hash
In get-mode, behaves like "auto_deref": in scalar context, returns
direct reference to the hash, list context, returns defereenced
hash.
In set-mode behaves asymmetrically: if passed one argument, and this
argument is a hashref, treats it as a hashref, otherwise
dereferences the arguments and creates a new hashref, which is
stored internally. I.e. the only way to clear the hash is to call "
-"method({}) >.
AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>.
THANKS
Karen Etheridge, Jesse Luehrs.