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


in reply to Should I leave behind beautiful code or readable code?

i know what it does, but i don't know why. one problem with complex return values is that you have avoided giving a name to the structure you have created, forcing me to make one up. maybe the subroutine itself names the structure, but it is hard to tell with MySub.

what is the significance of the first two columns of strings in @somearray? are you creating a hash or a list? what are you offering up as the "readable" alternative?

without changing the expression itself, any of these would be clearer, depending:

my %aliases_for_things = map split(/ /,$_,2), map uc, @somearray; return %aliases_for_things;
return map split(/ /,$_,2), map uc, @somearray; # FIRST and LAST names
my @labels_and_values = map split(/ /,$_,2), map uc, @somearray; return @labels_and_values;
this naming is something you would have to do anyway were you to avoid the maps with the usual foreach...push alternative:
my @flattened_pairs; foreach my $thing (@somearray) { my $upper_thing = uc $thing; my @pair = split / /, $upper_thing, 2; push @flattened_pairs, @pair; } return @flattened_pairs;
as i read something like that, i'm mentally transforming it back to maps so i can personally understand it better anyway. the real gain here is not in the refactoring, but in giving a name to the structure you are returning.