in reply to How do I combine arrays and array of hashes?

The question isn't quite clear as to the desired outcome. I'll read it as: you want to turn two one-element arrays, each of whose element is a hashref, into one one-element array, whose element is a hashref of the combined hashes. That seems a little weird.

But here's one idea:

@aoh2 = ({map { %$_ } (@aoh1, @aoh2)});

It does the same thing with multiples; e.g., if one of the arrays has multiple hashrefs in it, it still gets rolled up into one output:

@aoh1 = ({ 'key1' => 'value1', 'key2' => 'value2' }); @aoh2 = ({ 'key3' => 'value3', 'key4' => 'value4' }, { 'key5' => 'value5', 'key6' => 'value6' }); @aoh2 = ({map { %$_ } (@aoh1, @aoh2)});
Output:
@aoh2 = ( { 'key5' => 'value5', 'key2' => 'value2', 'key6' => 'value6', 'key4' => 'value4', 'key1' => 'value1', 'key3' => 'value3' } );

Replies are listed 'Best First'.
Re^2: How do I combine arrays and array of hashes?
by eye (Chaplain) on Jan 01, 2009 at 11:28 UTC
    As fullermd notes, the OP's question is a bit unclear. If the intent was to combine arrays of hashes and produce a simple array (an operation not subject to problems with conflicting keys), fullermd's solution can be modified to:
    @aoh3 = map {values %$_} (@aoh1, @aoh2);