Perl:数组引用与匿名数组

2023-11-21

这可能是一个愚蠢的问题...以下代码输出的内容@arrayref and @arraycont分别。请注意它们之间的区别以及它们的值分配方式。我知道匿名数组的作用,但有人能解释为什么有区别吗?

非常感谢。

@arrayref = ();
@array = qw(1 2 3 4);
$arrayref[0] = \@array;
@array = qw(5 6 7 8);
$arrayref[1] = \@array;
print join "\t", @{$arrayref[0]}, "\n";
print join "\t", @{$arrayref[1]}, "\n";

@arraycont = ();
@array = qw(1 2 3 4);
$arraycont[0] = [@array];
@array = qw(5 6 7 8);
$arraycont[1] = [@array];
print join "\t", @{$arraycont[0]}, "\n";
print join "\t", @{$arraycont[1]}, "\n";

outputs

5   6   7   8   
5   6   7   8   
1   2   3   4   
5   6   7   8   

这创建了一个shallow数组的副本:

$arraycont[0] = [@array];

而这只是创建了对它的引用:

$arrayref[0] = \@array;

由于您稍后修改了数组:

@array = qw(5 6 7 8);

arrayref仍然指向内存中相同的数组位置,因此当在 print 语句中取消引用时,它会打印当前数组值5 6 7 8.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl:数组引用与匿名数组 的相关文章

  • Swift - 如何复制包含引用类型的数组

    我正在尝试复制数组及其值 为什么两个数组都引用同一个变量 您可以在 Playground 中尝试此操作 var view UIView view tag 1 var a UIView var b UIView a append view b
  • C++ 通过引用传递动态分配的二维数组

    这个问题是基于之前提出的问题而提出的 通过已知大小的引用多维数组传递 https stackoverflow com questions 529109 c pass by reference multidimensional array w
  • 通过链接导航多个对象而不重复

    我正在尝试浏览一堆带有其他对象链接的对象 我想从 id 1 开始并浏览每个对象 有些对象会循环回到之前的对象 所以我想确保每个对象只查看一次 否则我会陷入无限循环 我还希望能够通过链接导航来判断哪些对象无法访问 我认为导航顺序并不重要 这是
  • 使用包管理器时如何管理 Perl 模块?

    A 最近的问题 https stackoverflow com questions 397817 unable to find perl modules in intrepid ibex ubuntu这让我开始思考 在我尝试过的大多数 Li
  • 如何发布数组多维角度js

    我在 angularjs 中有一个数组 示例如下 scope order qty 20 scope order adress Bekasi scope order city Bekasi 这个数组可以用这个代码发布 http method
  • PHP—array_merge_recursive() - 相同键没有数组

    php a php gt data1 tag gt div classes gt 1 2 3 php gt data2 tag gt section classes gt 2 3 4 5 6 php gt result array merg
  • 将数组转换为具有默认值的对象的更简洁方法? (洛达什可用)

    我有一个数组 比如说 a b c 我想将其转换为一个对象 该对象以数组值作为键和我可以设置的默认值 所以如果默认值是true 我希望我的输出是 a true b true c true 下面的代码是否有更简洁的版本来实现此目的 var my
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • 当值相同时,为什么我的值比较返回 false?

    我有一个 perl 脚本 可以将 Excel XLS 文件中的数据加载到数据库中 首先 它检查文件中的值的日期时间是否已存在于数据库中 如果是 它会检查文件中的值是否与数据库中的值相同 如果它们相同 则跳过该值 如果不同 则更新数据库中的值
  • Android:如何在播放媒体(mp3)时在特定毫秒内显示文本

    我正在尝试做一个类似卡拉 OK 的应用程序 我想在某一毫秒到来时显示一个或多个单词 例如 1148 毫秒 gt 打印 尼古拉斯 1826 毫秒 gt 打印 是 2766 毫秒 gt 打印 旧 ms gt 显示 这是我的代码 包 com ex
  • 如何实现 Vec 的修剪?

    Rust 提供了字符串的修剪方法 str trim http doc rust lang org stable std primitive str html method trim删除前导和尾随空格 我想要一个对字节串执行相同操作的方法 应
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • Repa 数组上的并行 mapM

    在我最近的work https github com bgamari mixture model with Gibbs sampling 我一直在充分利用RVar http hackage haskell org packages arch
  • 如何将列表复制到数组

    我有导游名单 List
  • 我在 javascript 中更新数组(键,值)对象

    如何更新数组 键 值 对象 arrTotals DistroTotal 0 00 coupons 12 invoiceAmount 14 96 我想将 DistroTotal 更新为一个值 我努力了 for var key in arrTo
  • 在 ExtUtils::MakeMaker 下调用 gcc -pthread

    指定编译和链接的正确方法是什么 pthread not lpthread 在 Makefile PL 中 据我了解 应该调用 gcc pthread针对 pthread 进行构建时 因为此标志会扩展为正确的特定于平台的标志以进行编译和链接
  • 如何打印v字串?

    如何打印v字串 our VERSION v2 1 print VERSION n n 打印笑脸 打印 v 字符串是什么意思 你想要什么输出 你可以这样做 printf vd VERSION prints 2 1 or this print
  • 使用 Lodash 的 TypeScript:_.map(["123", " 234 "], _.trim) 返回 boolean[]?

    我有一个字符串数组 它们已像这样分割 var searchValue 600 800 123 180 var groups searchValue split gt 600 800 123 180 因此项目周围可能存在空格 并且我想删除空格
  • 使用 Lodash 将对象键转换为具有键值数量的数组[重复]

    这个问题在这里已经有答案了 我有一个产品对象 products bread 1 milk 2 cheese 2 chicken 1 我想要一个包含产品名称的数组 如下所示 products bread milk milk cheese ch

随机推荐

  • python argparse 设置未提供参数时的行为

    我对 python 相当陌生 并且在使用命令行参数时一直困扰着如何构建我的简单脚本 该脚本的目的是自动执行我工作中与排序和操作图像相关的一些日常任务 我可以指定参数并让它们调用相关函数 但我也想在未提供参数时设置默认操作 这是我当前的结构
  • 如何以角度模拟模块

    所以我读了很多帖子 但到目前为止还没有有效的建议 我想模拟一个模块 比如说 angular foo 原始文件与其他所有文件一起加载 angular module app angular foo 我想在我的业力 摩卡测试中模拟这个模块 我已经
  • R:在深度嵌套列表中按名称查找对象

    Problem 我认为这应该是一个常见问题 但我找不到解决方案 让我们假设一个深度嵌套的列表 例如 my list lt list first node list group a list E001 1 5 E002 list F001 6
  • 将 JSON.NET JObject 转换为 JsonResult 时出现异常

    我有一个 JSON NET JObject 其数据结构如下 foo bar baz 我试图将其转换为 ASP NET MVC JsonResult 如下所示 JObject someData JsonResult jsonResult Js
  • 快速测试目录是否为空

    测试目录是否为空的最快方法是什么 当然我可以检查的长度 list files path all files TRUE include dirs TRUE no TRUE 但这需要枚举我宁愿避免的目录的全部内容 EDIT 我正在寻找便携式解决
  • Composer 不生成库的自动加载

    我已经设置了两个项目 一个 init 和一个库 这是 init 所需的 它们都设置了 PSR 0 自动加载 但库中的自动加载值不会添加到 init 项目中的vendor composer autoload namespaces php 中
  • 为什么 Math.max(double a, double b) 不是可变参数?

    为什么 Math max 的实现不是可变参数函数 它可以像这样实现 public class Main public static double max double values double max Double NEGATIVE IN
  • 逐像素颜色转换 WriteableBitmap => 仅 PNG 黑色到透明颜色

    我正在开发一个 silverlight 应用程序 其中所有图标都是 PNG 的颜色all这些图标是黑色的 或者更确切地说是黑色到灰色的 具体取决于 Alpha 值 每个 PNG 都有透明背景 在我的应用程序中 我想要逐个像素地进行颜色更改
  • 如何知道

    如果滚动结束已到达 div 标签 我需要触发一个函数 page bind scroll function e page is the ID of the div im scrolling if document body scrollHei
  • 左侧带有箭头的微调器

    我正在开发一个 RTL 语言的应用程序 想要更改 Spinner 左侧箭头的位置 有没有办法在不创建自定义微调器的情况下执行此操作 您必须编写一个自定义微调器 示例代码如下 您可以根据需要进行编辑
  • 在 Swift 中获取两个日期(月/日/小时/分钟/秒)之间的差异

    我试图将当前日期之间的差异作为NSDate 和来自 PHP 的日期time 调用例如 NSDate timeIntervalSinceReferenceDate 1417147270 我如何获取两个日期之间的时间差 我想要一个比较两个日期的
  • 找到正值的零交叉和负值的零交叉

    我有一个信号 我想在以下情况下复制 1 从过零开始变为正值 2 复制一定数量的点 例如8000 3 复制完 8000 个点后 继续追加点 直到找到向下的过零部分 我可以找到零交叉点 但我在知道如何判断零交叉点何时变为正值和 或零交叉点变为负
  • 无法再打开 Spyder IDE 进行 Python 编程

    几个月前 我在我的 Windows 7 笔记本电脑上安装了 Python 3 4 作为 Anaconda 的一部分 https www continuum io downloads 我的安装包括 Spyder IDE 并且我已成功使用 Sp
  • ES6 中是否有对 ES5 `module.exports = require('./inner.js')` 的一行类比?

    before module exports require inner js nowadays export default from inner js 我正在尝试这样做 但是 babel 只允许在 es7 stage 1 中这样做目前的建
  • 自定义属性 - 是还是不是?

    最近 我阅读了越来越多关于人们在 HTML 标签中使用自定义属性的文章 主要是为了嵌入一些额外的数据以在 javascript 代码中使用 我希望收集一些反馈 了解使用自定义属性是否是一个好的做法 以及一些替代方案 看起来确实可以简化bot
  • MSBuild IIS 问题

    我正在使用 MSBuild 打包和发布我的 Asp Net MVC 3 Net 4 应用程序 我已经为 MVC 1 0 Net 3 5 应用程序成功完成了此操作 每当我包含 IIS 设置 IncludeIisSettings true 在我
  • ASP.NET MVC 视图模型最佳实践

    我的 ASP NET MVC 站点连接到 WCF 服务以获取数据 WCF 服务返回如下数据协定 DataContract public class Person DataMember public string First get set
  • 对特定 URL 强制使用 HTTPS

    这应该很快 这是我当前的 htaccess 文件 BEGIN WordPress
  • 在 vi/vim 中替换并保留某些“单词”

    例如 如果我有 asd word 123 我想把它替换为 this gt line word 123 保留 word 123 我怎么能这么做呢 通过使用这个 s asd this gt line g 我无法保留中间的措辞 请赐教 使用正则表
  • Perl:数组引用与匿名数组

    这可能是一个愚蠢的问题 以下代码输出的内容 arrayref and arraycont分别 请注意它们之间的区别以及它们的值分配方式 我知道匿名数组的作用 但有人能解释为什么有区别吗 非常感谢 arrayref array qw 1 2