Perl按值对类哈希结构的Perl哈希进行排序
我有这样的结构:Perl按值对类哈希结构的Perl哈希进行排序,perl,Perl,我有这样的结构: '$self' => { 'stepTimePercentage' =>{ 'id12' => { 'percentage' => '1.00' }, 'id15' => { 'percentage' => '30.00'
'$self' => {
'stepTimePercentage' =>{
'id12' => {
'percentage' => '1.00'
},
'id15' => {
'percentage' => '30.00'
},
'id4' => {
'percentage' => '20.00'
},
'id9' => {
'percentage' => '15.00'
},
}
}
我想按照“百分比”的值对这个结构进行排序。我尝试了以下方法,但得到的结果是:“在数值比较()中使用未初始化的值”
foreach my$key(排序{$self->{stepTimePercentage}->{percentage}{$b}$self->{stepTimePercentage}->{percentage}{$a}}key%{$self->{stepTimePercentage}){
打印“$key-$self->{stepTimePercentage}->{$key}->{percentage}%\n”;
}
然后我尝试这样做(我得到“全局符号”$key“需要显式的包名”):
foreach my$key(排序{$self->{stepTimePercentage}{key}{$b}$self->{$stepTimePercentage}{$key}{$a}}}keys%{$self->{stepTimePercentage}}){
打印(“$key-$self->{stepTimePercentage}->{$key}->{percentage}%\n”);
}
你就快到了。您正在排序的键位于三级哈希的第二级,因此您需要:
foreach my $key (sort {
$self->{stepTimePercentage}{$b}{percentage}
<=>
$self->{stepTimePercentage}{$a}{percentage}
} keys %{$self->{stepTimePercentage}}) {
print "$key - $self->{stepTimePercentage}->{$key}->{percentage} % \n";
}
foreach my$key(排序{
$self->{stepTimePercentage}{$b}{percentage}
$self->{stepTimePercentage}{$a}{percentage}
}键%{$self->{stepTimePercentage}}){
打印“$key-$self->{stepTimePercentage}->{$key}->{percentage}%\n”;
}
你就快到了。您正在排序的键位于三级哈希的第二级,因此您需要:
foreach my $key (sort {
$self->{stepTimePercentage}{$b}{percentage}
<=>
$self->{stepTimePercentage}{$a}{percentage}
} keys %{$self->{stepTimePercentage}}) {
print "$key - $self->{stepTimePercentage}->{$key}->{percentage} % \n";
}
foreach my$key(排序{
$self->{stepTimePercentage}{$b}{percentage}
$self->{stepTimePercentage}{$a}{percentage}
}键%{$self->{stepTimePercentage}}){
打印“$key-$self->{stepTimePercentage}->{$key}->{percentage}%\n”;
}
My Perl非常生锈,如果这是不正确的,那么很抱歉-您可以在哈希查找中使用未引用的字符串文字吗?或者它应该是$self->{“stepTimePercentage”}->{“percentage”}
?我的Perl非常生锈,如果这是不正确的,很抱歉-您可以在哈希查找中使用未引用的字符串文本吗?或者应该是$self->{“stepTimePercentage”}->{“percentage”}
?现在,如果我的另一个键->值元素与“percentage”处于同一级别,该怎么办?它会是一样的吗?现在,如果我有另一个键->值元素“百分比”在同一个级别上呢?会是一样的吗?
foreach my $key (sort {
$self->{stepTimePercentage}{$b}{percentage}
<=>
$self->{stepTimePercentage}{$a}{percentage}
} keys %{$self->{stepTimePercentage}}) {
print "$key - $self->{stepTimePercentage}->{$key}->{percentage} % \n";
}