in reply to Re^2: Declare and slice-initialize hash in one statement?
in thread Declare and slice-initialize hash in one statement?

Also called mesh()

The downside of it's use of prototypes is that it precludes the use of inline anonymous array constructors:

use List::MoreUtils qw[zip]; my %hash = zip [1..3],['a'..'c']; Type of arg 1 to main::zip must be array (not single ref constructor) +at Type of arg 2 to main::zip must be array (not single ref constructor) +at

In this case, trading the avoidance of two backslashes for the need to declare and initilise temporary arrays, or substitute the unweildy

use List::MoreUtils qw[zip]; my %hash = zip @{[1..3]},@{['a'..'c']};

is not such a good trade. Of course it does handle more than two arrays, but that is a fairly rare usage.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^4: Declare and slice-initialize hash in one statement?
by Roy Johnson (Monsignor) on Oct 27, 2005 at 17:25 UTC
    Defeat troublesome prototypes by calling functions with &. Order your ampersand today! (Some parentheses required.)
    my %hash = &zip([1..3],['a'..'c']);

    Caution: Contents may have been coded under pressure.

      I'm not adverse to using the minutiae of Perl's syntax, but that is just a little subtle for my taste. I also get confused about when the use of & implies reusing the current @_.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        Without &, parentheses are optional and prototypes are observed. With &, prototypes are ignored and you must supply parens, or @_ gets inherited.

        Caution: Contents may have been coded under pressure.