I need a function which takes two hash references as an input and outputs a hash reference, which has all the keys that are unique to one of the inputs and in the case of common keys the value belonging to the second one overwrites the first one.
Of course I could iterate over the keys, but in the case of nested structures this has to be recursive. The whole thing gets very complicated and presumably slow. Is there an optimized solution to this problem?
my $ref1=
{
ref1_specific_key => 'some value',
common_key =>
{
ref1_specific_subkey => 'some sub value',
common_subkey => 'foo'
}
};
my $ref2=
{
ref2_specific_key => 'some other value',
common_key =>
{
ref2_specific_subkey => 'some other sub value',
common_subkey => 'bar'
}
};
my $output=
{
ref1_specific_key => 'some value',
ref2_specific_key => 'some other value',
common_key =>
{
ref1_specific_subkey => 'some sub value',
ref2_specific_subkey => 'some other sub value',
common_subkey => 'bar'
}
};
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.