Perl 对数组引用的数组进行排序

2024-01-06

我对 Perl 比较陌生。我有一个名为 $TransRef 的数组的引用,其中包含对数组的引用。我的目标是编写一个子程序,它将 $TransRef 参数作为唯一参数,按第二个元素(字符串)对底层数组的引用进行排序,并将输出设置回 $TransRef 引用。有人可以展示如何在 Perl 中完成此操作吗?

这是生成 $TransRef 的一些代码。尚未经过测试,可能存在一些错误:

# Parse the data and move it into the Transactions container.
for ($Loop = 0; $Loop < 5; $Loop++)
{
   $Line = $LinesInFile[$Loop];
   # Create an array called Fields to hold each field in $Line.
   @Fields = split /$Delimitor/, $Line;  
   $TransID = $Fields[2];
   # Save a ref to the fields array in the transaction list.
   $FieldsRef = \@Fields;
   ValidateData($FieldsRef);
   $$TransRef[$Loop] = $FieldsRef;
}
SortByCustID($TransRef);

sub SortByCustID()
{
   # This sub sorts the arrays in $TransRef by the 2nd element, which is the cust #.
   # How to do this?
   my $TransRef = @_;
   ...
}

非常简单:

sub sort_trans_ref {
    my $transRef = shift;
    @$transRef = sort { $a->[1] cmp $b->[1] } @$transRef;
    return $transRef;
}

尽管对我来说不修改原始数组会更自然:

sub sort_trans_ref {
    my $transRef = shift;
    my @new_transRef = sort { $a->[1] cmp $b->[1] } @$transRef;
    return \@new_transRef;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl 对数组引用的数组进行排序 的相关文章

随机推荐

  • 如何关联两个 pandas 数据帧的标量值

    如何关联两个 pandas 数据帧 为所有值找到一个 r 值 我不想关联列或行 而是关联所有标量值 一个数据帧是 x 轴 另一个数据帧是 y 轴 我在这里下载了结构相同的 csv 文件 https www gapminder org dat
  • List 和 IEnumerable 之间有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 IEnumerable 和 Array IList 和 List 有什么区别 https stackoverflow com questions 764748 whats the difference
  • 使用 C# 和 JSON.net 读取 JSON 文件

    我在理解如何使用 JSON net 读取 json 文件时遇到一些困难 该文件如下所示 version files url http www url com name someName name someOtherName url http
  • F#:尝试记忆成员函数会在每次调用时重置缓存?

    我试图记住一个类的成员函数 但是每次调用该成员 由另一个成员 时 它都会创建一个全新的缓存和 记忆 函数 member x internal dec rates let cache new Dictionary lt Basis DateT
  • 确定 32 位 int 的符号

    仅使用 gt NO LOOPS 我需要确定 32 位整数的符号 如果为正 则需要返回 1 如果为 0 则需要返回 0 如果为负 则需要返回 1 有任何想法吗 我首先考虑移动 31 位 然后查看该标志 但这显然行不通 现在我有点卡住了 如果条
  • 在 matplotlib 中根据 (x, y, z) 数据集绘制等值线/轮廓

    嗨 我是编程新手 我正在尝试做一些可能非常明显的事情 但我一生都无法弄清楚 我有一系列 x y z 数据 在我的例子中 对应于距离 深度和 pH 值 我想使用 matplotlib 在 xy 距离 深度 网格上绘制 z 数据 pH 的等值线
  • 获取 n 英里半径内的所有邮政编码

    让如下函数正常工作的最佳方法是什么 def getNearest zipCode miles 也就是说 给定邮政编码 07024 和半径 返回该半径内的所有邮政编码 SourceForge 上有一个项目可以帮助解决这个问题 http sou
  • 批处理脚本命令自动停止批处理脚本

    我通过以下方式运行批处理脚本时遇到一个奇怪的问题cmd exe在 Windows 上 echo off gradle wrapper gradlew build pause 该批处理脚本仅执行第一个命令 即gradle wrapper 之后
  • 在前进到下一个单元之前,强制 matplotlib 在 IPython/Jupyter 笔记本单元中完全渲染绘图

    在 IPython Jupyter 笔记本中 我遇到类似于以下伪代码的情况 cell 1 run some computation plot several plots separate figures cell 2 run some co
  • Tkinter - 如何更改默认的笔记本边框颜色?

    下面是我的示例代码 from tkinter import from tkinter import ttk root Tk root geometry 400x300 style ttk Style style configure TNot
  • 如何以集群模式运行docker redis?

    我启动了我的 redis docker 容器 docker run privileged true p 6379 6379 name TestRedis d redis 当我尝试在集群模式下从 Spring Redis 使用它时 出现错误
  • 如何从 JavaScript Promise 中获取价值?

    我有一个 userBalance 承诺对象 具有以下值 gt userBalance Promise 100000000000000000 domain Domain domain null events removeListener Fu
  • 如何使用 python 获取地理 TIFF 图像

    今天我遇到了麻烦 因为我第一次必须使用 TIFF 文件 并且遇到了错误 我正在尝试获取具有欧洲污染剂值的栅格 因此我对保持图像的高分辨率没有兴趣 但只是为了保留数据 我可以操纵图像 我的代码很简单 from future import pr
  • 如何淡出文本、更改文本以及淡入文本?

    我在数据模板中使用 TextBlock 作为数据网格中的单元格 我有一个要求 当单元格的值发生变化时 文本应该 更改前淡出 值应该改变 再次淡入 目前 我使用 TargetUpdated RoutedEvent 触发动画 使文本消失然后再回
  • Laravel 4:to_array() 在哪里?

    伙计 这真是令人沮丧 在 Laravel 4 中 使用 Eloquent 可以实现以下效果 var dump Worker find 1 但如果我尝试使用to array 它崩溃了 var dump Worker find 1 gt to
  • ffmpeg 可以将音频从原始 PCM 转换为 WAV 吗?

    我可以将 wav 文件转换为 pcm ffmpeg i file wav f s16le acodec pcm s16le file pcm 我怎样才能恢复这个操作 wav 容器只是向原始 PCM 数据添加一个简单的标头 标头包括格式 采样
  • Django 中的单表继承

    Django 中是否明确支持单表继承 据我所知 该功能仍在开发和争论中 是否有我可以同时使用的库 黑客来捕获基本行为 我有一个混合不同对象的层次结构 具有 Employee 类 员工类型的子类和 manager id parent id 的
  • JPQL:查询多列时,什么样的对象包含结果列表?

    我正在尝试在 PHP Co 中做一些简单的事情 选择 COUNT x 作为 numItems AVG y 作为平均值 FROM Z 在 PHP 中 我会得到一个像 numItems 0 average 0 这样的简单数组 我可以像这样使用它
  • “找不到文件... bin\roslyn\csc.exe”[重复]

    这个问题在这里已经有答案了 In Visual Studio 2017 when hitting Ctrl F5 to run my ASP NET Framework Web API server I get Could not find
  • Perl 对数组引用的数组进行排序

    我对 Perl 比较陌生 我有一个名为 TransRef 的数组的引用 其中包含对数组的引用 我的目标是编写一个子程序 它将 TransRef 参数作为唯一参数 按第二个元素 字符串 对底层数组的引用进行排序 并将输出设置回 TransRe