in reply to Keys/Values being lost with this code--any help?
You are assigning the result of split() to a %hash
## your code is effectively this: my %hash_list = ( " Bill 34", " Jane 28", " John 20", " Tom 19", " +Wall 18" ); ## which means... my %hash_list = ( # key # value " Bill 34" => " Jane 28", " John 20" => " Tom 19", " Wall 18 => undef );
Upon upon further inspection, if you just want to sort these in alphabetical order, you do not need to assign them to a hash... just use a simple sort, and you're done:
print sort ( split( /,/, $names ) );
However, if you want to sort them by, say, the number to the right of the name, then you do need to use a hash:
my $names = "John 20, Bill 34... etc"; my @elems = split( /\s*,\s*/, $names ); my %num2name = map{ reverse split( /\s/, $_ ) } @elems; my @sorted = map{ $num2name{$_} } sort { $a <=> $b } keys %num2n +ame; print "@sorted\n";
|
|---|