You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl如何按epoch时间戳排序多维数组并提取内容到新变量

解决方案

你可以直接对computers数组的元素按report_date_epoch字段做数值排序,直接把排序后的结果赋值给新数组变量即可,自动就去掉了外层的哈希结构:

# 原始数据变量
my $data = {
  computers => [
    {
      report_date_epoch => 1591107993595,
      serial_number => "C02YK1TAFVCF",
      username => "fake1\@example.com",
    },
    {
      report_date_epoch => 1626877069476,
      serial_number => "C03XF8AWJG5H",
      username => "fake2\@example.com",
    },
    # 其余数据省略
  ]
};

# 按report_date_epoch升序排序,得到无外层结构的新数组
my @sorted_items = sort { $a->{report_date_epoch} <=> $b->{report_date_epoch} } @{$data->{computers}};

补充说明

  • 如果你需要降序排序,把排序逻辑里的$a和$b调换位置即可:sort { $b->{report_date_epoch} <=> $a->{report_date_epoch} }
  • 必须使用数值比较符<=>,不要用字符串比较符cmp,避免长数字按字符串排序出现错误结果
  • 最终得到的@sorted_items就是直接存储所有排序后数据条目的数组,没有外层的computers键包裹

内容的提问来源于stack exchange,提问作者Jeremy Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 03:48:03