Hello, I came up with the following code (simplified example) and I'm wondering if you can think of a better way to do it. Grepping through the entire array once for each element in the first list seems incredibly wasteful, but I'm at a loss as to how to fix it. Basically, the first array is the order in which the user selected something. The Array of Hashes is the order in which stuff is pulled out of the database. I need to make sure the Array of Hashes is put in the same order the user selected the items.
Please note that it's just a coincidence that the first array is 1..5 in order, it's possible it could be in any other order.
Thanks in advance for any help!
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my $array_ref = [1, 2, 3, 4, 5];
my $array_of_hashes_ref = [
{key => 4, name => 'label4'},
{key => 2, name => 'label2'},
{key => 5, name => 'label5'},
{key => 1, name => 'label1'},
{key => 3, name => 'label3'}
];
# WANT:
# $array_of_hashes_ref = [
# {key => 1, name => 'label1'},
# {key => 2, name => 'label2'},
# {key => 3, name => 'label3'}
# {key => 4, name => 'label4'},
# {key => 5, name => 'label5'},
# ];
my $new_array_ref;
for my $key (@$array_ref)
{
push @$new_array_ref, grep {$_->{'key'} == $key} @$array_of_hashes
+_ref;
}
warn Dumper($new_array_ref);
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.