http://www.perlmonks.org?node_id=510634


in reply to Basic help with mapping

Am i missing something? Your second map logic works fine (modified space to -) if i understand the problem

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $AoH_orig = [ { 'title' => 'aaa-aaa', 'name' => 'tom' }, { 'title' => 'bbb-bbb', 'name' => 'kathy' }, { 'title' => 'ccc-ccc', 'name' => 'bill' } ]; #try mapping print Dumper ($AoH_orig); my $AoH_new = map { $_->{'title'} =~ s/-/_/g } @$AoH_orig; print Dumper($AoH_orig);

$VAR1 = [ { 'name' => 'tom', 'title' => 'aaa-aaa' }, { 'name' => 'kathy', 'title' => 'bbb-bbb' }, { 'name' => 'bill', 'title' => 'ccc-ccc' } ]; $VAR1 = [ { 'name' => 'tom', 'title' => 'aaa_aaa' }, { 'name' => 'kathy', 'title' => 'bbb_bbb' }, { 'name' => 'bill', 'title' => 'ccc_ccc' } ];

All dashes (-) are replaced with underscore (_) isn't that what you are trying?

I probably will not use map for this as you are not returning a list back. I would stick with your for for idea.

 $_->{'title'} =~ s/-/_/g for(@$AoH_orig); should work just fine (i think)

cheers

SK