in reply to Re^4: Effeciency of key-only hash
in thread Effecicncy of key-only hash
you can shave off two characters by omitting the parentheses.
If you want to omit characters, you can write
my %hash = map $_=>1, qw(shave the modern way);
Update: I'm sorry, I should have tested this code... thanks to lodin, see below.
(Not to mention the whitespace... but often some more characters make the code more readable.)
I find it quite natural that map uses list context and grep uses scalar context. grep's block evaluates to a boolean value (whether or not to include the element), which is a scalar. map's block evaluates to... well, a list. If this were not the case, the parentheses would not help.
One remark about this "map" solution: Note that this works only once. If you use the hash-slice solution, you can add something to the set several times.
In Section
Seekers of Perl Wisdom