$games{person} = "11::Game name::Game date"; foreach (sort keys %games) { my ($count, $rest) = $games{$_} =~ /^([^:]+)::(.*)/; print "
##
use strict;
use warnings;
use Data::Dumper;
my %games;
$games{person1} = "11::Game name::Game date";
$games{person2} = "12::Game name::Game date";
$games{person3} = "9::Game name::Game date";
# sort by score, and record sorted list of hash keys
my @sorted =
map { $_->[0] }
sort { $b->[1] <=> $a->[1] }
map { [ $_, (split /::/,$games{$_})[0] ] }
keys %games;
foreach (@sorted) {
# my ($count, $rest) = $games{$_} =~ /^(\d+)::(.*)/;
# I like thor's split with limit suggestion below,
# certainly looks cleaner.
my ($count, $rest) = split/::/,$games{$_},2;
print "$_ $count $rest ...\n";
}
####
...
print "$_->[1] $_->[2] ...\n"
for sort { int $b->[1] <=> int $a->[1] }
map { [ $_, split /::/, $games{$_}, 2 ] }
keys %games;
...