根据键(id)对perl数组数据结构中的键,值对进行排序

moh*_*abu 2 arrays sorting perl

我试图在perl中对数组数据结构中存在的键值对进行排序.但是,当有多个条目时,我无法解析如何排序.

以下是我的代码:

  my @users = (
       {id => 1,  name => "Frank"},
       {id => 10, name => "Joe"},
       {id => 5,  name => "Paul"}
      );
Run Code Online (Sandbox Code Playgroud)

我希望输出按ID递增排序:

       {id => 1,  name => "Frank"},
       {id => 5,  name => "Paul"},
       {id => 10, name => "Joe"}
Run Code Online (Sandbox Code Playgroud)

以下是我的努力:

  use strict; 
  use warnings;
  use 5.010;
  my @users = 
  (
    {id => 1,  name => "Frank"},
    {id => 10, name => "Joe"},
   {id => 5,  name => "Paul"}
  );

 foreach my $name (keys %users) {

 printf "%-8s %s\n",$users{id},$users{name};
 }
Run Code Online (Sandbox Code Playgroud)

任何建议都会非常有帮助.

Bor*_*din 5

您的数据规格存在冲突,但这样做是否符合您的要求?

use strict;
use warnings;
use 5.010;

my @users = (
    { id => 1,  name => "Frank" },
    { id => 10, name => "Joe" },
    { id => 5,  name => "Paul" },
);

for my $item ( sort { $a->{id} <=> $b->{id} } @users ) {
    printf "%-8s %s\n", $item->{id}, $item->{name};
}
Run Code Online (Sandbox Code Playgroud)

产量

1        Frank
5        Paul
10       Joe
Run Code Online (Sandbox Code Playgroud)