Perl - 对多维数组进行排序

Jer*_*son 1 perl

我有一个看起来像这样的变量:

do {
  my $a = {
    computers => [
      {
        report_date_epoch => 1591107993595,
        serial_number => "C02YK1TAFVCF",
        username => "fake1\@example.com",
      },
      {
        report_date_epoch => 1626877069476,
        serial_number => "C03XF8AWJG5H",
        username => "fake2\@example.com",
      },
...
Run Code Online (Sandbox Code Playgroud)

我想按纪元编号将其排序为一个没有computers数组的新变量。

zdi*_*dim 5

computer排序键的 arrayref 中的 hashref 列表

use warnings;
use strict;
use feature 'say';
use Data::Dump qw(dd);

my $v = { 
    computers => [
        {
            report_date_epoch => 1591107993595,
            serial_number => "C02YK1TAFVCF",
            username => "fake1\@example.com",
        },
        {
            report_date_epoch => 1626877069476,
            serial_number => "C03XF8AWJG5H",
            username => "fake2\@example.com",
        }
    ]   
};

my @by_epoch =  
    sort { $a->{report_date_epoch} <=> $b->{report_date_epoch}  } 
    @{$v->{computers}};

dd $_ for @by_epoch;
Run Code Online (Sandbox Code Playgroud)

我使用Data::Dump打印复杂的数据结构。(还有其他不错的。)

或使用核心(已安装)工具

use Data::Dumper;
...
say Dumper $_ for @by_epoch;
Run Code Online (Sandbox Code Playgroud)