in reply to Re^2: strange map behavior
in thread strange map behavior

That makes more sense. But you might want to use join to increase readability.
my %h = map { join('_', $_->{'a'}, $_->{'c'}) => $_->{'b'} } @arr ;