use strict;
# こんな配列
my @results = ("E:15000", "S:20000", "W:15000", "N:50000");

# 得点が同点の場合の順
my %prio_of = (
E => 0, S => 1, W => 2, N => 3,
);

my @s_results = map { $_->[0] }
sort { $b->[2] <=> $a->[2] || $prio_of{$a->[1]} <=> $prio_of{$b->[1]} }
map { [ $_, (split/:/=>$_)] } @results;