in reply to using map with compound code blocks to alter strings: a strange result

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.


___________
Eric Hodges