Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl按值对类哈希结构的Perl哈希进行排序_Perl - Fatal编程技术网

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";

}