位置: 编程技术 - 正文

perl引用的相关知识分享(perl中qw)

编辑:rootadmin

为何使用引用?

在perl4中,hash表中的value字段只能是scalar,而不能是list,这对于有些情况是很不方便的,比如有下面的数据:Chicago, USAFrankfurt, GermanyBerlin, GermanyWashington, USAHelsinki, FinlandNew York, USA

我们想要按国家将城市分类,每个国家后面对应城市列表,如果用perl4来做,必须将城市列表组合成字符串才行,如果用perl5就可以用引用来做,有了引用,就可以构造复杂的hash结构,就可以用列表作为hash的值了。

如何定义引用

方法一 使用斜线

定义变量的时候,在变量名前面加个,就得到了这个变量的一个引用,比如

方法二 匿名引用

方法一不是很常用,最常用的还是匿名引用,方法如下匿名数组引用-用[]定义$aref= [ 1,"foo",undef, ];

匿名数组的元素仍然可以是匿名数组,所以我们可以用这种方法构造数组的数组,可以构造任意维度的数组。my $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],]

匿名哈希引用-用{}定义

$href= { APR =>4, AUG =>8 };

使用引用

定义了引用之后,可以使用不同的方法来访问引用,这里主要有三种方法。记忆这三种方法有个诀窍,将他们与普通的变量访问作比较即可。

方法一

与普通变量的访问方法相比,假设原来的变量名是name,则此方法在所有name出现的地方用$name代替,如下:

# 方法一#方法二#同理,哈希引用的使用方法如下。

注意:当{}内部是$var的形式时,{}是可以省略的,也就是说@{$aref}等价于@$aref,不过初学最好养成使用{}的习惯。

方法三前两种方法比较繁琐,这种很简洁,就是使用箭头符号->

解引用总结我们知道[1, 2, 3]定义了一个(1, 2, 3)的匿名引用,所以数组a实际上包含三个元素,每个元素是一个引用,该引用指向一个数组,所以我们可以用下面的方法来访问数组元素(注意,下标从0开始)

$a[1][2]表示第二行第三列元素6,也可以写成$a[1]->[2],不过很少有人这么写。还可以写成${$a[1]}[2],几乎没人这么写!

多维数组的另一个写法如下:

这两者的区别有以下几点:1)、前者是真正的数组,所以定义变量是使用@,后者是指向匿名数组的引用,所以定义的时候使用$2)、前者的数组元素是匿名数组,而外层数组则是实体数组,后者无论元素还是外层数组都是匿名数组3)、前者可以用$a[x][y]的形式访问,而后者只能用解引用的方式访问,即$a->[x][y]的形式。

数组的哈希,哈希的数组,哈希的哈希

也就是哈希表中的每个元素也是一个哈希表,比如一个学生集合组成的哈希,其key是学生名字(唯一),其值是每个学生的属性,比如年龄,身高及学号等。

引用的赋值

$aref2 = $aref1; 将使得$aref2和$aref1指向同一个数组,如果想将$aref1指向的数组拷贝一份给$aref2的话,使用下面的方法,[]里面对数组进行解引用,而[]以解引用后的数组为内容生成了一个新的匿名数组,又赋值给$aref2。$aref2 = [@{$aref1}];

注意:不能使用下面的形式,外层的[]是不可缺少的。由于=左边是标量,所以右边的数组会被解释为标量环境,得到的是数组元素个数,而不是元素本身。但是如果加上[]就可以了,这样perl知道这是一个匿名数组的赋值。$aref2 = @{$aref1};

判断一个变量是否是引用

使用ref函数即可,如果变量是引用则返回真,否则返回假。实际上它更智能,它会返回引用对应的类型,比如HASH或者ARRAY。

判断两个引用是否指向同一个目标

可以用eq,这将以字符串的形式判断,也可以使用==

产生如下输出:ARRAY(0xbec)ARRAY(0xbec)reference equal (eq)reference equal (==)

推荐整理分享perl引用的相关知识分享(perl中qw),希望有所帮助,仅作参考,欢迎阅读内容。

perl引用的相关知识分享(perl中qw)

文章相关热门搜索词:perl语句,perl中qw,perl调用函数,perl调用函数,perl index用法,perl中index,perl引用与解引用,perl 引用,内容如对您有帮助,希望把文章链接给更多的朋友!

perl 调试命令的相关知识小结 缺省的Perl调试器就是perl解释器本身,另外还有图形界面的调试器。由于在开发程序时一般都使用telnet访问服务器,因此本文主要为大家介绍下缺省的命

perl use 命令中指定路径的方法 注意:uselib后面只能跟directory,不能跟file。uselib'c:perllibxml';useparser注解:parse.pm是目录c:perllibxml下的一个模块。

perl的cgi高级编程介绍 一CGI.pm中的方法(routines)调用1.CGI.pm实现了两种使用方法,分别是面向对象的方式和传统的perlmodule方法的方式。面向对象的方式:#!/usr/local/bin/perl-wuseC

标签: perl中qw

本文链接地址:https://www.jiuchutong.com/biancheng/372500.html 转载请保留说明!

上一篇:perl的INC设置分析(perl-v)

下一篇:perl 调试命令的相关知识小结(调用perl脚本)

  • 全国增值税专用发票计算机稽核网络系统工程
  • 出口退税新政策报关费发票要怎么开
  • 金融类企业
  • 应付销货方代垫运费计入什么科目
  • 对公账户给私人转账手续费
  • 租的厂房水电费开不了发票怎么办
  • 免抵退税办法不得抵扣的进项税额包含了什么业务
  • 工资结算汇总表会计科目
  • 公司净资产如何查询
  • 新办商贸企业一般纳税人合同金额
  • 监理费可以由施工方出吗
  • 销售成本结转中的库存商品的单价错了怎么改u8
  • 将自建的厂房对外转让需要缴纳增值税吗
  • 增值税专用发票有效期是多长时间
  • 税控维护费的分录
  • 城镇土地使用税减免税政策
  • 专项附加扣除什么时候返还
  • 总包劳务工资发什么科目
  • 代开专票时城建税一起扣了季报怎么报税
  • 付款后多久开发发票
  • 电缆与变压器连接有何规定
  • 电费发票和实际交的钱不一样怎样支付
  • 以公司名义购买房产的利与弊
  • win11时间不对
  • 一个非常好看的中秋礼物怎么做
  • PHP:pg_escape_literal()的用法_PostgreSQL函数
  • 营改增全面推开为什么还叫试点
  • 承兑汇票到期超过10天怎么办
  • 店面装修费怎么算
  • 房产税和城镇土地使用税需要计提吗
  • 孕妇钙片什么时候吃最好吸收? 已解决
  • vue中用echarts
  • vue router-view路由详解
  • 房地产企业出售房产增值税
  • 公司股权转移怎么办理
  • 个人提供劳务怎么去税务局开发票
  • 社保公司承担部分计入哪个科目
  • python3 sys模块
  • 织梦上传图片大小设置
  • 在建工程可以核酸无形资产
  • discuz mysql8.0
  • dedecms插件
  • 办公室装修费多少钱可以一次性入账
  • 新手任务税控设备申请
  • 红冲去年暂估的费用怎么做账
  • 劳务派遣和劳务承揽的区别
  • 销售货物没有开票的会计分录
  • 工程施工企业收到工程款,怎么做分录
  • 企业比赛奖金要交税吗
  • 汇算清缴交通费填在办公费里面吗
  • 社保个人部分如何继承
  • 哪些行业不能开电子发票
  • 体检费用开发票给公司怎么开
  • 企业对处于不同位置的产品或服务制定不同的价格
  • 失控发票进项税转出企业无法承担所得税怎么办
  • 冲销以前年度多计提的折旧
  • 工程项目分包需要招标吗
  • centos6.10配置网络
  • samba开启
  • bios是什么怎么设置
  • Win8.1 64位系统安装Office365出现30125-1011错误提示的故障原因及解决方法
  • ububtu安装教程
  • linux fdisk -l
  • cocos2dx视频教程
  • android按钮点击效果的实验报告
  • glviewport超出屏幕范围
  • dos基本命令大全关机
  • python编程术语
  • jquery制作下拉菜单
  • npm镜像是什么意思
  • 手机端apk反编译工具_android反编译工具
  • js中slice方法的作用
  • javascript:download()
  • android回调函数
  • JavaScript的Number对象的toString()方法
  • java script
  • 小规模纳税人房土两税优惠政策
  • 税务网络安全制度
  • 坡面台阶
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设