johngg has asked for the wisdom of the Perl Monks concerning the following question:
I have data in a three-deep hash reference (HoHoH) called $rhHandles and I wanted to extract those second level hash records with the "public" attribute set and place them in another HoH structure, $rhPublicHandles. I had the keys I wanted in a list, @publicHandles, and my first solution was to iterate over @publicHandles in a for loop;
$rhPublicHandles->{$_} = $rhHandles->{handles}->{$_} for @publicHandles;
However, I wondered whether using a hash slice would be a more efficient solution. After a struggle to get my head around the syntax I came up with this.
@{%{$rhPublicHandles}}{@publicHandles} = @{%{$rhHandles->{handles}}}{@publicHandles};
It works very well and benchmarks faster that the loop but it is not nearly as readable for those who have to maintain my code when I move on.
The question, then, is whether there is a simpler, more readable syntax for hash reference slicing that I could employ to do this job. I don't really want to sacrifice the efficiency of the slice but the loop is far more obvious in what it is doing.
Cheers,
JohnGG
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Tricky syntax with hash ref. slicing
by Fletch (Bishop) on Mar 10, 2006 at 14:49 UTC | |
by johngg (Canon) on Mar 10, 2006 at 16:29 UTC | |
|
Re: Tricky syntax with hash ref. slicing
by VSarkiss (Monsignor) on Mar 10, 2006 at 15:50 UTC | |
by johngg (Canon) on Mar 10, 2006 at 16:32 UTC | |
by ikegami (Patriarch) on Mar 10, 2006 at 17:55 UTC | |
by johngg (Canon) on Mar 13, 2006 at 10:09 UTC | |
|
Re: Tricky syntax with hash ref. slicing
by borisz (Canon) on Mar 10, 2006 at 16:16 UTC | |
by johngg (Canon) on Mar 10, 2006 at 17:03 UTC | |
|
Re: Tricky syntax with hash ref. slicing
by shotgunefx (Parson) on Mar 10, 2006 at 16:24 UTC |