The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

List::Objects::WithUtils::Role::Hash - Hash manipulation methods

SYNOPSIS

  use List::Objects::WithUtils 'hash';

  my $hash = hash(foo => 'bar');

  $hash->set(
    foo => 'baz',
    pie => 'tasty',
  );

  my @matches = $hash->keys->grep(sub {
    $_[0] =~ /foo/
  })->all;

  my $pie = $hash->get('pie')
    if $hash->exists('pie');

  for my $pair ( $hash->kv->all ) {
    my ($key, $val) = @$pair;
  }

DESCRIPTION

A Role::Tiny role defining methods for creating and manipulating HASH-type objects.

new

Constructs a new HASH-type object.

array_type

The class name of list/array-type objects that will be constructed from the results of list-producing methods.

Defaults to List::Objects::WithUtils::Array.

Subclasses can override array_type to produce different types of array objects; the method can also be queried to find out what kind of array object will be returned:

  my $type = $hash->array_type;

clear

Clears the current hash entirely.

is_empty

Returns boolean true if the hash has no keys.

defined

  if ( $hash->defined($key) ) { ... }

Returns boolean true if the key has a defined value.

exists

  if ( $hash->exists($key) ) { ... }

Returns boolean true if the key exists.

get

  my $val  = $hash->get($key);
  my @vals = $hash->get(@keys)->all;

Retrieves a key or list of keys from the hash.

If we're taking a slice (multiple keys were specified), results are returned as an "array_type" object.

set

  $hash->set(
    key1 => $val,
    key2 => $other,
  )

Sets keys in the hash.

Returns an "array_type" object containing the new values.

delete

  $hash->delete( @keys );

Deletes keys from the hash.

Returns an "array_type" object containing the deleted values.

keys

  my @keys = $hash->keys->all;

Returns the list of keys in the hash as an "array_type" object.

values

  my @vals = $hash->values->all;

Returns the list of values in the hash as an "array_type" object.

kv

  for (my $pair = $hash->kv->all) {
    my ($key, $val) = @$pair;
  }

Returns an "array_type" object containing the key/value pairs in the HASH, each of which is a two-element ARRAY.

export

  my %hash = $hash->export;

Returns a raw key/value list.

SEE ALSO

List::Objects::WithUtils

Data::Perl

AUTHOR

Jon Portnoy <avenj@cobaltirc.org>

Portions of this code are derived from Data::Perl by Matthew Phillips (CPAN: MATTP), haarg et al

Licensed under the same terms as Perl.