The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME
    Ref::Explicit - Keywords to create arrayrefs and hashrefs

VERSION
    version 0.001

SYNOPSIS
      use Ref::Explicit qw(arrayref hashref);

      my $arrayref = arrayref map { ... } @values;
      my @array_of_hashrefs = map { hashref $key => $value, ... } @values;

DESCRIPTION
    This module exports keywords that provide an explicit syntax for
    creation of arrayrefs and hashrefs in contexts where the ordinary perl
    syntax leads to a punctuation overdose.

FUNCTIONS
  "arrayref" (@VALUES)
    Return an array reference containing the values passed as arguments.
    Useful if you have long "map"-like expressions whose result you need as
    am array reference rather than as an ordinary list. Consider the
    following example:

      sub search {
        ...
        my @result = grep {
          ... # complex multiline
          ... # calculations
        } @values;

        return \@result;
      }

    You need to introduce an extra variable (@result) in order to return a
    reference. This is a very common scenario, e.g. in Moose attribute
    builders. You could avoid the extra variable by using square brackets:

      return [ grep {
        ...
      } @values ];

    But this makes the syntax ugly and the intent unclear. With "arrayref"
    the above code becomes:

      return arrayref grep {
        ...
      } @values;

  "hashref" (@VALUES)
    Return a hash reference containing the values passed as arguments.
    Useful within "map"-like expressions that return a list of hashrefs.
    Consider the following example:

      my @names = ("Steven Spielberg", "George Lucas");
      my @persons = map { +{ name => $_, industry => 'Movies'  } } @names;

    The "+" (plus) sign tells the parser to evaluate the code in curly
    brackets as an anonymous hashref rather than as a block. With "hashref"
    this can be written more elegantly as:

      my @persons = map { hashref name => $_, industry => 'Movies' } @names;

CAVEATS
    These functions provide clarity, not speed. Use the core syntax if speed
    is of the essence.

AUTHOR
    Peter Shangov <pshangov@yahoo.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2011 by Peter Shangov.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.