NAME List::Objects::WithUtils - Object interfaces to lists with useful methods SYNOPSIS use List::Objects::WithUtils; my $array = array(qw/ aa Ab bb Bc bc /); my @upper = $array->grep( sub { $_[0] =~ /^b/i } )->map( sub { uc $_[0] } )->uniq->all; # @upper = ( 'BB', 'BC' ) my $hash = hash( foo => 'bar', snacks => 'cake' ); $hash->set( foobar => 'baz', pie => 'tasty' ); my @matching = $hash->keys->grep(sub { $_[0] =~ /foo/ })->all; if ( $hash->keys->any_items eq 'snacks' ) { ... } DESCRIPTION A small set of roles and classes defining an object-oriented interface to Perl hashes and arrays. Originally derived from Data::Perl. Some commonly used functions from List::Util, List::MoreUtils, and List::UtilsBy are conveniently provided as methods. See: List::Objects::WithUtils::Role::Array List::Objects::WithUtils::Role::WithJunctions List::Objects::WithUtils::Role::Hash array is imported from List::Objects::WithUtils::Array and creates a new ARRAY-type object. Behavior is defined by List::Objects::WithUtils::Role::Array; look there for documentation on available methods. hash is imported from List::Objects::WithUtils::Hash; see List::Objects::WithUtils::Role::Hash for documentation. Why another object-oriented list module? There are a fair few object-oriented approaches to lists on CPAN, none of which were quite what I needed. Data::Perl comes the closest -- but is primarily targetting MooX::HandlesVia and cannot guarantee a stable API at the time this was written (plus, I don't need the other data types). This module aims to provide a consistent, natural interface to hashes and arrays exclusively, with convenient access to common tools. The interface is expected to remain stable; methods may be added but are not expected to be removed (or experience incompatible interface changes, barring serious bugs). AUTHOR Jon Portnoy Significant portions of this code are derived from Data::Perl by Matthew Phillips (CPAN: MATTP), haarg, and others. Licensed under the same terms as Perl.