Welcome to the Monastery | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
The issue with my @mergedkeys = keys %{{@array1, @array2}} is that your assignment does not include values for the keys. This can be fixed using map:
my @mergedkeys = keys %{{map {$_ => 1} @array1, @array2}}; However: assuming this code will have to be maintained, consider that what is slick today maybe wholly obscure next month. Rather than using this, I'd recommend using List::MoreUtils' uniq to accomplish this. Its intent will be much more obvious on casual inspection. As well, it will respect order, if that matters to your application. On the topic of "eliminat[ing] the temporary hash", you can use scoping the get Perl to to the work for you. Just declare your temporary hash with my in a code block and it will go out of scope and be garbage collected once you exit the block. Something like:
or use do (or a subroutine) if you need to export:
In reply to Re: Merge arrays - seeking slicker approach
by kennethk
|
|