Your intent is not clear. What do you mean by “returning a hash”? You can't do that, per se. Did you mean to return a hash ref or a list of key/value pairs that can be assigned to a hash?
In either case the hash slice is a red herring. Quoth perlop under Assignment Operators:
[…] a list assignment in list context produces the list of lvalues assigned to, […]
which matches the exact behaviour you described.
If you want to return a hash ref you're going about this wrong. That code would be
sub build_hash { my %return; @return{@keys} = @values; \%return; }
Returning a list of key/value pairs requires more list-fu:
sub build_hash { ( @keys, @_ )[ map { $_, $_ + @keys } 0 .. $#keys ]; }
Makeshifts last the longest.
In reply to Re: hash slice ? No thanks, I'm about to return...
by Aristotle
in thread hash slice ? No thanks, I'm about to return...
by leriksen
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |