in reply to Re: Perl Idioms Explained - my ($foo, $bar) = @{shift(@_)}{qw/ -foo -bar /}
in thread Perl Idioms Explained - my ($foo, $bar) = @{shift(@_)}{qw/ -foo -bar /}

I would agree with you that this is not the best approach and I don't use it in my code anyway. Yesterday someone asked in the CB about what the following code is doing:
my ($foo, $bar) = @{+shift}{qw/ -foo -bar/};

I thought it might be a good idea to post it. It's not that obvious to the less experienced coders that the hash slice @values = @hash{@keys} is involved. There was a supersticious '+' in the original question as well, which I have removed.