in reply to Re: Re: Re: Splice of ref to AoH not removing element
in thread Splice of ref to AoH not removing element

Thanks again chromatic. I do understand the basics you explained. I guess there is something idomatic that I'm missing. I was able to get it working fine by replacing the grep line with:
my @difference; for my $i ( 0 .. $#AoH_all) { for my $key (keys(%keep_ids)) { if ($AoH_all[$i]{'id'} == $key ) { $difference[$i] = $AoH_all[$i]; } } }
I'm sure that your grep line is doing just that. I just can't get it to work.
my %difference = grep { exists $keep_ids{ $_->{id} } } @AoH_all; print Dumper (%difference);
prints:
$VAR1 = 'HASH(0x808bd2c)'; $VAR2 = undef;
The deadline looms, so I must 'loop' back for another look at grepping and that last line of yours. Thanks for getting me this far!

Update: With those edits to chromatic's grep line, it worked as intended beautifully. PM rocks.

—Brad
"A little yeast leavens the whole dough."

Replies are listed 'Best First'.
Re^5: Splice of ref to AoH not removing element
by tkil (Monk) on May 31, 2004 at 02:53 UTC

    At least one problem is that you're assigning a list into a hash — which is legal, but probably not what you want in this case:

    my %difference = grep { exists $keep_ids{ $_->{id} } } @AoH_all;

    I think you want something more like this (note that I'm assigning this into an array, not a hash):

    my @keepers = grep { exists $keep_ids{ $_->{id} } } @AoH_all;