Map puts the return from the code block in the array, not a modified version of $_. This is a common gotcha especialy if you want to run a regex on $_ and return the result.
use Data::Dumper; my @test = qw/hello world/; print Dumper( map { s/o// } @test ), "\n"; print Dumper( map { s/o//; $_ } @test ), "\n";
Outputs:
$VAR1 = 1; $VAR2 = 1; $VAR1 = 'hell'; $VAR2 = 'wrld';
Notice how the first returns that same rouge 1 like you are getting. So you just have to make sure that the last statement in your map code block is returning the value you want to insert into the array.
In reply to Re: using map with compound code blocks to alter strings: a strange result
by eric256
in thread using map with compound code blocks to alter strings: a strange result
by jbullock35
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |