in reply to Re: What would you change?
in thread What would you change?

Rather than dealing with an appalling mess of curlies and sigils...

I can't recall ever wanting to take a slice of a hashref myself, but this line aroused my curiosity, so I investigated to see just how bad it could be.

First I went for the naive approach:

my @stuff = @$href{ qw/key1 key2 key3/ };

And was rather surprised to discover that I'd got it right first try!

Perhaps the reason this seems intuitive to me and not to you because I already habitually write $$href{key1} rather than $href->{key1}, so I'm used to using double sigils to dereference things? (Henceforth I shall use this consistency as an argument in favour of my preferred syntax!)

Replies are listed 'Best First'.
Re^3: What would you change?
by rudder (Scribe) on May 18, 2008 at 03:34 UTC

    For extra clarity (to me, anyway), I prefer to write it as:

    my @stuff = @{$hashref}{ qw(key1 key2 key3) }; # or my @keys = qw(key1 key2 key3); my @stuff2 = @{$hashref}{ @keys };

    (with the extra curlies). For some reason I never was crazy about the arrow shortcut here. In fact... umm... how do I correctly write the above using the arrow? I can't get it to work.