Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

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

by xdg (Monsignor)
on Oct 27, 2005 at 16:51 UTC ( [id://503414]=note: print w/replies, xml ) Need Help??


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

Which is also available in List::MoreUtils, with no referencing needed.

use strict; use List::MoreUtils qw(zip); my @keys = (1..3); my @values = (4..6); my %hash = zip @keys, @values;

-xdg

Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

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

    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.
      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://503414]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2024-04-24 01:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found