( {} sort) : , . or . , -:
@animals = sort {
$animals{$a}{'name'} cmp $animals{$b}{'name'} or
$animals{$a}{'legs'} <=> $animals{$b}{'legs'}
} keys %animals;
cmp <=> (-1, 0 1) , , . (cmp , <=> .) Perl 0 , -1 1 - true. cmp , or , sort . cmp false, <=> .
"-" (aka Schwartzian Transform):
@animals =
map { $_->[0] }
sort {
$a->[1] cmp $b->[1] ||
$a->[2] <=> $b->[2]
}
map { [$_, $animal{$_}{name}, $animal{$_}{legs}] }
keys %animal;
, , , . , - (, , ) . , , .