无涯教程-Perl - References(引用)
Perl引用是一个标量数据类型,该数据类型保存另一个值的位置,该值可以是标量,数组或哈希。
创建引用
变量,子程序或值创建引用很容易,方法是在其前面加上反斜杠,如下所示:
$scalarref =\$foo; $arrayref =\@ARGV; $hashref =\%ENV; $coderef =\&handler; $globref =\*foo;
您不能使用反斜杠运算符在I/O句柄上创建引用,但可以使用方括号创建对匿名数组的引用,如下所示-
$arrayref=[1, 2, [a, b, c]];
您可以使用大括号以类似方式创建对匿名哈希的引用,如下所示:
$hashref={Adam => Eve,Clyde => Bonnie, };
可以通过使用不带子名的sub来创建对匿名子程序的引用,如下所示-
$coderef=sub { print "Boink!\n" };
取消引用
要取消引用的引用,只需使用$,@或%作为引用变量的前缀,具体取决于引用是指向标量,数组还是哈希。 示例-
#!/usr/bin/perl$var=10;# Now $r has reference to $var scalar. $r =\$var;# Print value available at the location stored in $r. print "Value of $var is : ", $$r, "\n";@var=(1, 2, 3); # Now $r has reference to @var array. $r =\@var; # Print values available at the location stored in $r. print "Value of @var is : ", @$r, "\n";%var=(key1 => 10, key2 => 20); # Now $r has reference to %var hash. $r =\%var; # Print values available at the location stored in $r. print "Value of %var is : ", %$r, "\n";
当执行上述程序时,将产生以下输出-
Value of 10 is : 10 Value of 1 2 3 is : 123 Value of %var is : key220key110
如果不确定变量类型,则可以使用 ref 轻松了解其类型,如果其参数是引用,则返回以下字符串之一。否则,它返回false-
SCALAR
ARRAY
HASH
CODE
GLOB
REF
让我们尝试以下示例-
#!/usr/bin/perl$var=10; $r =\$var; print "Reference type in r : ", ref($r), "\n";@var=(1, 2, 3); $r =\@var; print "Reference type in r : ", ref($r), "\n";%var=(key1 => 10, key2 => 20); $r =\%var; print "Reference type in r : ", ref($r), "\n";
当执行上述程序时,将产生以下输出-
Reference type in r : SCALAR Reference type in r : ARRAY Reference type in r : HASH
循环引用
当两个引用包含彼此的引用时,将发生循环引用。创建引用时必须要小心,否则循环引用可能会导致内存泄漏。以下是一个示例-
#!/usr/bin/perlmy $foo=100;$foo =\$foo;print "Value of foo is : ", $$foo, "\n";
当执行上述程序时,将产生以下输出-
Value of foo is : REF(0x9aae38)
引用函数
如果您需要创建一个信号处理程序,则可能会发生这种情况,因此您可以通过在函数名称前添加\&来生成对该函数的引用, 以下是一个示例-
#!/usr/bin/perl# Function definition sub PrintHash {my (%hash)=@_;foreach $item (%hash) {print "Item : $item\n";} } %hash=(name => Tom, age => 19);# Create a reference to above function. $cref =\&PrintHash;# Function call using reference. &$cref(%hash);
当执行上述程序时,将产生以下输出-
Item : name Item : Tom Item : age Item : 19
Perl - References(引用) - 无涯教程网无涯教程网提供Perl引用是一个标量数据类型,该数据类型保存另一个值的位置,该值可以是标量,数组或...
https://www.learnfk.com/perl/perl-references.html
相关文章:
无涯教程-Perl - References(引用)
Perl引用是一个标量数据类型,该数据类型保存另一个值的位置,该值可以是标量,数组或哈希。 创建引用 变量,子程序或值创建引用很容易,方法是在其前面加上反斜杠,如下所示: $scalarref \$foo; $arrayref …...
马斯克收购AI.com域名巩固xAI公司地位;如何评估大型语言模型的性能
🦉 AI新闻 🚀 AI拍照小程序妙鸭相机上线商业工作站并邀请摄影师进行内测 摘要:AI拍照小程序妙鸭相机将上线面向商业端的工作站,并邀请摄影师进行模板设计的内测。妙鸭相机希望为行业提供更多生态产品,扩大行业规模&a…...
uni-app:实现点击按钮出现底部弹窗(uni.showActionSheet+自定义)
一、通过uni.showActionSheet实现底部选择 效果 代码 <template><view><button click"showActionsheet">点击打开弹窗</button></view> </template><script> export default {methods: {showActionsheet() {uni.showAct…...
flume系列之:监控zookeeper的flume配置写入节点,新增和删除flume agent节点,通过ansible自动部署和卸载flume agent
flume系列之:监控zookeeper的flume配置写入节点,新增和删除flume agent节点,通过ansible自动部署和卸载flume agent 一、相关技术二、流程梳理三、部署和删除flume agent效果四、监控zookeeper节点五、新增zookeeper节点部署flume agent六、删除zookeeper节点删除flume agen…...
了解以太网通信中的九阳神功 - SOME/IP协议
智能座舱SOME/IP通信 概述SOME/IP基础协议SOME/IP SD协议通信行为流程开机流程关机行为行为时序总结概述 SOME/IP协议是目前国内座舱SOA化应用比较广泛的一种ECU或车辆网络内设备之间交换数据的网络通信协议。它允许不同车辆组件,如发动机控制单元、信息娱乐系统、车身控制模…...
redis List类型命令
在Redis中,List(列表)是一种有序的、可重复的数据结构,它支持插入、删除和获取元素的操作。以下是一些常见的Redis List类型命令: LPUSH:将一个或多个值从列表的左侧插入。LPUSH key value1 value2 ...其中…...
【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)
prometheus 出现NaN场景以及如何去除干扰(Not a Number) 1、在prometheus中使用NaN来表示无效数值或者结果 场景: 一些监控系统使用 NaN 作为空值或缺失值,但在 Prometheus 中 NaN 只是另一个浮点值。Prometheus 表示缺失数据的方式是让数据缺失。Prom…...
【计算机网络】网络层协议 -- ICMP协议
文章目录 1. ICMP协议简介2. ICMP协议格式3. ping命令4. ping命令与端口号没有关系!!!5. traceroute命令 1. ICMP协议简介 ICMP(Internet Control Message Protocol,控制报文协议),用于在IP主机…...
机器学习---facebook的案例学习
import pandas as pd import matplotlib.pyplot as plt import seaborn as sbn from sklearn.model_selection import train_test_split,GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier # 使用pandas读…...
OpenMMLab MMDetectionV3.1.0-SAM(环境安装、模型测试、训练以及模型后处理工具)
OpenMMLab Playground 概况 当前通用目标检测的研究方向正在朝着大型多模态模型发展。除了图像输入之外,最近的研究成果还结合了文本模式来提高性能。添加文本模态后,通用检测算法的一些非常好的属性开始出现,例如: 可以利用大量…...
ios_base::out和ios::out、ios_base::in和ios::in、ios_base::app和ios::app等之间有什么区别吗?
2023年8月2日,周三晚上 今天我看到了这样的两行代码: std::ofstream file("example.txt", std::ios_base::out);std::ofstream file("example.txt", std::ios::out);这让我产生了几个疑问: 为什么有时候用ios_base::o…...
PostgreSQL 使用SQL
发布主题 设置发布为true 这个语句是针对 PostgreSQL 数据库中的逻辑复制功能中的逻辑发布(Logical Publication)进行设置的。 PostgreSQL 中,逻辑复制是一种基于逻辑日志的复制方法,允许将数据更改从一个数据库实例复制到另一…...
Shell编程基础(十四)文本三剑客(grep)
文本三剑客(grep) 使用场景基本使用返回值参数 使用场景 主要用于查找,过滤文本数据;该数据可以来自文件,也可以来自管道流等等。 grep除了原有的实现,后来还出现了以下扩展实现 egrep:支持扩展…...
Linux root用户执行修改密码命令,提示 Permission denied
问题 linux系统中(ubuntu20),root用户下执行passwd命令,提示 passwd: Permission denied ,如下图: 排查 1.执行 ll /usr/bin/passwd ,查看文件权限是否正确,正常情况是 -rwsr-xr…...
Java面向对象学习第三部分
一、Static修饰符 static是静态的意思,基本概念如下: Static分类: 一般我们分类都是按照是否使用static修饰进行分类。分为静态变量(类变量)、实例变量。 静态变量和实例变量的比较: 比较,…...
python+vue生成条形码码并展示
需求 最近想做一个小工具,大概要实现这样的效果:后端生成条形码后,不保存到服务器,直接返回给前端展示。 大概思路是,通过 python-barcode库 生成条码的字节流,生成字节流后直接编码成base64格式返回给前…...
在线高精地图生成算法调研
1.HDMapNet 整体的网络架构如图所示,最终的Decoder输出三个分支,一个语义分割,一个embedding嵌入分支,一个方向预测。然后通过后处理将这些信息处理成向量化的道路表示。 img2bev的方式之前有IPM,通过假设地面的高度都…...
【干货】商城系统的重要功能特性介绍
电子商务的快速发展,商城系统成为了企业开展线上销售的重要工具。一款功能强大、用户友好的商城系统能够有效提升企业的销售业绩,提供良好的购物体验。下面就商城系统的重要功能特性作一些简单介绍,帮助企业选择合适的系统,打造成…...
MYSQL06高级_为什么使用索引、优缺点、索引的设计、方案、聚簇索引、联合索引、注意事项
文章目录 ①. 为什么使用索引②. 索引及其优缺点③. InnoDb - 索引的设计④. InnoDb中的索引方案⑤. 索引 - 聚簇索引⑥. 索引 - 二级索引⑦. B树索引的注意事项⑧. MyISAM中索引方案 ①. 为什么使用索引 ①. 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比去图书馆…...
LeetCode 130. 被围绕的区域
题目链接:130. 被围绕的区域 题目描述 给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例1: 输入:board [[“…...
具身智能赋能:无感定位打破 UWB 传统空间交互局限
具身智能赋能:无感定位打破 UWB 传统空间交互局限人工智能技术向实体空间深度渗透,具身智能成为空间计算领域进阶发展的核心方向。区别于传统算法仅停留在数据层面分析决策,具身智能依托空间感知能力让智能体系拥有环境理解、自主交互、动态适…...
Louvain 算法:让网络自己“报团取暖”的发现者
🧩 Louvain 算法:让网络自己“报团取暖”的发现者为什么你的朋友圈会自然分成老同学、同事和游戏好友?Louvain算法就是网路世界里的“社交侦探”,它能自动帮你看清整个网络中“谁和谁是一伙的”。一、从一个生活场景说起 …...
2026年TOP5运营多年口碑平稳的金价查询app有哪些
前几天跟闺蜜约饭,她一坐下来就疯狂吐槽:前一周特意蹲了网上说的金价合适的时段,攒了好久的钱想去买那条种草了半年的金项链,结果到了线下门店才知道,当天大盘价已经涨了21块钱,比她查的那个三天没更新的小…...
智能戒指制造商Oura秘密提交IPO申请,累计融资15亿美元,付费会员有望破500万
5月22日消息,据《华尔街日报》报道,智能戒指制造商Oura已秘密提交首次公开募股(IPO)申请。该产品获多位名人称赞,销量可观,此次IPO表现值得关注。产品功能与背景Oura智能戒指能追踪心率、皮肤温度等指标&am…...
告别MCUXpresso IDE:手把手教你用VSCode + CMake + Ninja搭建NXP MCU开发环境(附SDK离线配置避坑指南)
告别MCUXpresso IDE:手把手教你用VSCode CMake Ninja搭建NXP MCU开发环境(附SDK离线配置避坑指南) 嵌入式开发者常年在资源受限的环境中工作,却不得不忍受传统IDE的资源挥霍。当MCUXpresso IDE占用2GB内存只为编辑一个头文件时&…...
2026论文写作工具红黑榜:一键生成论文工具怎么选?一篇讲透:
2026年论文写作工具红黑榜出炉,红榜优先选千笔AI、ThouPen、豆包,适配国内学术规范;黑榜避开低质免费工具、无真实引用平台、过度依赖全文生成的工具。选择时建议按需求匹配三维模型:需求匹配度 - 数据可信度 - 成本承受力。一、红…...
Windows Defender彻底移除指南:3步释放30%系统性能的终极方案
Windows Defender彻底移除指南:3步释放30%系统性能的终极方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirr…...
海洋涡旋识别与追踪:如何用Python快速掌握海洋中尺度涡旋的完整分析流程?
海洋涡旋识别与追踪:如何用Python快速掌握海洋中尺度涡旋的完整分析流程? 【免费下载链接】py-eddy-tracker Eddy identification and tracking 项目地址: https://gitcode.com/gh_mirrors/py/py-eddy-tracker 你是否曾为海洋涡旋数据处理的复杂性…...
ISTA 2A-2011 (2022) 全解析|≤68kg 单个包装件部分模拟运输测试标准
前言ISTA 2A-2011 (2022) 属于 ISTA 2 系列部分模拟性能测试,专门针对重量不大于 68kg(150lb)的单个运输包装件设计,是中小型产品包装最常用的入门级运输验证标准。该标准通过温湿度、堆码压力、振动、冲击等测试模块,…...
Docker 部署实战:前端应用容器化指南
Docker 部署实战:前端应用容器化指南 什么是 Docker? Docker 是一个开源平台,用于开发、部署和运行应用程序。它使用容器化技术,将应用程序及其依赖打包在一个独立的容器中。 Docker 的优势 一致性:开发环境与生产环境…...
