У меня есть эта структура:Perl Сортировки Perl хэш хэша как структура значений
'$self' => {
'stepTimePercentage' =>{
'id12' => {
'percentage' => '1.00'
},
'id15' => {
'percentage' => '30.00'
},
'id4' => {
'percentage' => '20.00'
},
'id9' => {
'percentage' => '15.00'
},
}
}
Я хочу, чтобы отсортировать эту структуру значений «процент». Я попробовал следующее, но я получил: «Использование неинициализированного значения в числовом сравнении (< =>)».
foreach my $key (sort{ $self->{stepTimePercentage}->{percentage}{$b} <=> $self->{stepTimePercentage}->{percentage}{$a} } keys %{$self->{stepTimePercentage}}) {
print "$key - $self->{stepTimePercentage}->{$key}->{percentage} % \n";
}
Тогда я судимое это (и я получаю "Глобальный символ "$ ключ" требует явного имя пакета"):
foreach my $key (sort{ $self->{stepTimePercentage}{key}{$b} <=> $self->{stepTimePercentage}{$key}{$a}} keys %{$self->{stepTimePercentage}}) {
print ("$key - $self->{stepTimePercentage}->{$key}->{percentage} % \n");
}
Мой Perl очень ржавый, очень жаль, если это покинуть базу - вы можете использовать не-кавычки строковые литералы в поисках хешей? или должно быть '$ self -> {" stepTimePercentage "} -> {" percent "}'? – dwanderson