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

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.

Replies are listed 'Best First'.
Re^5: Declare and slice-initialize hash in one statement?
by BrowserUk (Patriarch) on Oct 27, 2005 at 17:36 UTC

    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.

        Yeah, just too darn subtle.

        sub x (\@\@) { print "@_" } @_ = qw[ some random junk retained from the current level of call ]; @a = 1..10; @b='a'..'g'; x @a, @b; ARRAY(0x1961458) ARRAY(0x196156c) &x( @a, @b ); 1 2 3 4 5 6 7 8 9 10 a b c d e f g &x, @a, @b; some random junk retained from the current level of call

        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.