http://qs321.pair.com?node_id=601893


in reply to Re^3: Hash assignments using map
in thread Hash assignments using map

first point is, you only have letters, no numbers, so Perl won't "increment" them

Really?

$ perl -le '$c = "a"; print ++$c' b

Check perlop:

The auto-increment operator has a little extra builtin magic to it. ... If, however, the variable has been used in only string contexts since it was set, and has a value that is not the empty string and matches the pattern "/^[a-zA-Z]*[0-9]*\z/", the increment is done as a string, preserving each character within its range, with carry ...

Update: Though you're actually right, but only by coincidence. Using the postfix autoincrement won't make the hash elements incremented.

$ perl -Mstrict -MData::Dumper -we 'my @a = qw(a b c d); \ my %h = map { $_++ } @a; print Dumper \%h' $VAR1 = { 'c' => 'd', 'a' => 'b' };


--chargrill
s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; = qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)

Replies are listed 'Best First'.
Re^5: Hash assignments using map
by mk. (Friar) on Feb 24, 2007 at 16:56 UTC
    my bad!
    it actually increments the elements of the array, but adds them unchanged to the hash.
    thanks for pointing that out, chargrill++! :)

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    *women.pm