perl 中的引用
perl 语言中的引用共分为两类:
声明引用时只需要在对象的前面加上反斜杠
第一列是数组的引用:
代码示例:
my @array = (, , );
my $array_ref = \@array;
第二种是哈希的引用
代码示例:
my %hash = (, , , );
my $hash_ref = \@hash;
通过引用去访问对应的值,通过 -> 操作符
数组的引用, 通过 [ ] 中括号 加上对应的下标,代码示例:
my @array = (, , );
my $array_ref = \@array;
print $array_ref->[];
哈希的引用,通过{} 大括号加上对应的key,代码示例:
my %hash = (, , , );
my $hash_ref = \@hash;
print $array_ref->{};
当我们想要把引用对应的变量传递给另外一个变量时,就需要解引用,使用 { } 大括号
代码示例:
my @array = (, , );
my $array_ref = \@array;
my @array_new = @{$array_ref}; my %hash = (, , , );
my $hash_ref = \@hash;
my %hash_new = %{$hash_ref};
数组的引用通过 @ 符号 , 哈希的引用通过 % 符号;
引用实际上存储的是所引用对象的地址,举个例子
perl -e 'my @a = (1, 2, 3, 4);my $b = \@a;print qq{$b\n};'
ARRAY(0x122bae8) perl -e 'my %a = (1, 2, 3, 4);my $b = \%a;print qq{$b\n};'
HASH(0x262dae8)
从上述代码的运行结果可以看出,数组的引用对应的值是 ARRAY+ 地址,哈希的引用是HASH+ 地址,这里的地址是一个16进制的值
除了使用 \ 符号, 声明一个引用外,还可以声明一个匿名引用, 数组的引用使用 [ ] 操作符, 哈希的引用使用 { } 操作符;
代码示例:
my $array_ref = [, , , ];
my $hash_ref = {, , , } print $array_ref->[];
print $hash_ref->{};
perl 中的引用的更多相关文章
- [Perl系列—] 2. Perl 中的引用使用方法
Perl 中的引用,为什么要使用引用? 对于熟悉C语言的开发人员来说, 指针这个概念一定不陌生. Perl 的引用就是指针,能够指向变量.数组.哈希表甚至子程序. Perl5中的两种Perl引用类型为 ...
- 【转载】Perl中的引用
为什么使用引用? 在perl4中,hash表中的value字段只能是scalar,而不能是list,这对于有些情况是很不方便的,比如有下面的数据: Chicago, USAFrankfurt, Ger ...
- Perl中的正则表达式
转自:http://c20031776.blog.163.com/blog/static/684716252013624383887/ Perl 程序中,正则表达式有三种存在形式 分别是 (1 模式匹 ...
- Perl中的匹配(六)
在Perl中,匹配的定界符如果是双斜线//,可以直接使用双斜线完成匹配操作. 如果特定条件下需要改变定界符,如改为{},[]等.需要加入m,m{},m[]等. m%^http://% 默认的模式匹配对 ...
- perl5 第十二章 Perl5中的引用/指针
第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用 子程序模板七.数组与子程序八.文件句 ...
- perl中my和our的区别分析
来源: http://www.jb51.net/article/35528.htm perl中our的用法require 5.006当版本号小于 5.006 的时候,会返回失败,从而导致模块加载失败. ...
- Perl中的hash类型
hash类型 hash类型也称为字典.关联数组.映射(map)等等,其实它们都是同一种东西:键值对.每一个Key对应一个Value. hash会将key/value散列后,按序放进hash桶.散列后的 ...
- perl的匿名引用
perl中列表不能嵌套,只能通过引用的方式构建复杂的结构.引用其实就是c中的指针,只不过perl中对指针,也就是一个地址的声明和取值有自己的一套方法. 1.先复习普通标量的引用方法: [vagrant ...
- perl 中的哈希赋值
在perl 中,通过代码动态的给哈希赋值,是最常见的应用场景,但是有些情况下,我们事先知道一些信息,当需要把这些信息存放进一个哈希的时候,直接给哈希赋值就好: 哈希的key不用说,就是一个字符串,关键 ...
随机推荐
- 使用Python实现Map Reduce程序
使用Python实现Map Reduce程序 起因 想处理一些较大的文件,单机运行效率太低,多线程也达不到要求,最终采用了集群的处理方式. 详细的讨论可以在v2ex上看一下. 步骤 MapReduce ...
- 移动web开发(三)——字体使用
参考: 移动web页面使用字体的思考.http://www.cnblogs.com/PeunZhang/p/3592096.html
- 1. CNN卷积网络-初识
1. CNN卷积网络-初识 2. CNN卷积网络-前向传播算法 3. CNN卷积网络-反向更新 1. 前言 卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面, 它的神经元间的连接是 ...
- AZURE云上 mkfs.ext4 /dev/sdc 导致宕机问题解决纪实
)开机启动挂载配置 [root@pldb2 ~]# vim /etc/fstab You have new mail in /var/spool/mail/root [root@pldb2 ~]# m ...
- thinkphp验证码乱码的解决办法
很有可能是入口文件index.php和.htaccess文件要转换成 以UTF-8无BOM格式编码
- How Not to Crash系列地址
http://inessential.com/hownottocrash How Not to Crash #1: KVO and Manual Bindings How Not to Crash # ...
- Android keytool 生成keystore与给APK签名
http://www.tttabc.com/android/keytool-keystore-jarsigner-apk.htm
- Java编程的逻辑 (74) - 并发容器 - ConcurrentHashMap
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- Jquery调用ajax参数说明
代码中有详细注释,直接上代码. 注释掉的选项,一般用不到,直接用最基本的部分就可以了. $.ajax({ // 请求的URL url: '../Daily/Daily_Report', //HTTP ...
- SpringCloud 天气预报系统 Quartz集成
https://blog.csdn.net/csdn_wangchen/article/details/79402097 继上一次的redis集成后,有了很大的改观,但是缺少数据的同步.------& ...