複数フィールドによるソート

my @multi_field_data_array = ();

my %data_1_hash = ();
$data_1_hash{"name"} = "oda";
$data_1_hash{"height"} = 170;
$data_1_hash{"weight"} = 50;

my %data_2_hash = ();
$data_2_hash{"name"} = "kato";
$data_2_hash{"height"} = 180;
$data_2_hash{"weight"} = 80;

my %data_3_hash = ();
$data_3_hash{"name"} = "sasaki";
$data_3_hash{"height"} = 150;
$data_3_hash{"weight"} = 70;

my %data_4_hash = ();
$data_4_hash{"name"} = "nomura";
$data_4_hash{"height"} = 140;
$data_4_hash{"weight"} = 70;

push(@multi_field_data_array, \%data_1_hash);
push(@multi_field_data_array, \%data_2_hash);
push(@multi_field_data_array, \%data_3_hash);
push(@multi_field_data_array, \%data_4_hash);

my @sorted = sort{ $b->{"weight"} <=> $a->{"weight"} || $b->{"height"}
<=> $a->{"height"} } @multi_field_data_array;
print("\n");
foreach(@sorted){
       print($_->{"name"}."\t ".$_->{"weight"}."\t".$_->{"height"}."\n");
}