There's more than one way to do things PerlMonks

### Re: Using map to create a hash/bag from an array

by GrandFather (Sage)
 on Dec 17, 2005 at 10:41 UTC ( #517462=note: print w/replies, xml ) Need Help??

in reply to Using map to create a hash/bag from an array

The idiomatic way to do that in Perl is @hash{qw(a b c)} = (1) x 3;:

```use strict;
use warnings;
use Data::Dumper;

my %hash;
@hash{qw(a b c)} = (1) x 3;
print Dumper (\%hash);

Prints:

```\$VAR1 = {
'c' => 1,
'a' => 1,
'b' => 1
};

DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^2: Using map to create a hash/bag from an array
by bart (Canon) on Dec 18, 2005 at 10:45 UTC
Except, IMHO, the hash values are irrelevant. Codewise, it's easier to use undef as hash values: your
```@hash{qw(a b c)} = (1) x 3;
then becomes
```@hash{qw(a b c)} = ();

That's a lot shorter, isn't it? And no need to count items.

And faster too (making the obvious benchmark addition):

```         Rate   set   map map++    GF  Bart
set    2288/s    --  -84%  -91%  -92%  -93%
map   14566/s  537%    --  -46%  -48%  -58%
map++ 26756/s 1070%   84%    --   -4%  -23%
GF    27881/s 1119%   91%    4%    --  -19%
Bart  34580/s 1412%  137%   29%   24%    --

See Re: Using map to create a hash/bag from an array for the original code

DWIM is Perl's answer to Gödel

Create A New User
Node Status?
node history
Node Type: note [id://517462]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (2)
As of 2018-04-21 10:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (81 votes). Check out past polls.

Notices?