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

Array::Object - Array Object

SYNOPSIS

 # construction
 $array = Array::Object->new(['foo', 'bar', 'baz']); # with a reference
 
 # decorate
 $array->{foo} = 'bar';

 # treat as ARRAY ref
 push @$array, @things;     # same for pop(), shift(), splice() et al
 $array->[42] = 'boo';

 # operations - modify IN PLACE!
 $array->pop();
 $array->push( @things );
 $array->shift();
 $array->unshift( @things );
 $array->splice( ... );
 $array->sort;
 $array->sort( sub { ... } )
 
 # visitors - modify IN PLACE!
 $array->map ( CODE )       # new Array::Object
 $array->grep( CODE )       # new Array::Object
  
 # other methods
 $array->length;
 $array->size;              # same as above
 $array->copy;              # new Array::Object (shallow copy)
 $array->concat([ ... ]);   # new Array::Object (shallow copy)
 $array = $a1 + $2          # same as above
 $array->join(',');

DESCRIPTION

This module implements a simple OO interface to Arrays. The underlying object, however, is a blessed Hash reference, but overload is used for making the object behave as an Array reference. This allows Array::Object to be decorated and subclassed more easily.

Additionally, when the usual methods which operate on Arrays are called as object methods, then the Array reference which is kept by the object is modified in place. Thus when you want a copy, do this:

 my @sorted = sort $@array;

which is NOT the same as:

 $array->sort;

which sorts in place. Thus the OO methods are not simply syntactic sugar (which would be kinda pointless) but have a useful semantic distinction.

METHODS

See SYNOPSIS.

AUTHOR

Richard Hundt

LICENSE

This library is free software and may be used under the same terms as Perl itself