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 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.