一、引用

常见数据类型的引用定义:

数据类型           定义      举例

标量变量           \$Var                              $Pointer  =  \$Var

数组                 \@Array                          $Pointer  =  \@Array

哈希变量           \%Hash                           $Pointer  =  \%Hash

文件句柄           \*FILEHANDLE                $Pointer  =  \

常量                 \常量                               $Pointer  =  \3.1415926

子程序              \&SubRoutine                  $Pointer  =  \&SubRoutine

匿名数组            [ LIST ]                            $Pointer  =  [ “Smith”,“Jack”,“Jimmy”,“ZhaZha”]

匿名哈希变量     { Key=>Value }                $Pointer  = { Key1=>Value1,Key2=>Value2}

匿名子程序        sub {}                               $Pointer  =  sub { printf( “Hello,Perl World\n”);}

对象引用           bless  $self;

reference是另一个变量的地址。reference可以指向array,hash,或perl代码段。reference使perl代码运行更快。

二、数组的引用

1)array的reference

$array_ref = \@array;

print $array_ref;#显示如下ARRAY(0x1a2b3c);

sub add_numbers{

my $array_ref= shift;

}

@numbers = (11,2,3,45);

$array_ref = add_numbers(\@numbers);

以上代码中,需要对array的reference进行dereference,然后才可以使用array中的元素。

以下是传递array的reference到subroutine的优点:

*如果array传递给subroutine,perl将整个array重新copy到@_中,当array比较大时,将非常低效;

*当我们需要在subroutine中修改原来的array时,需要传递array的reference;

*reference其实是构造复杂数据结构的本质。

2)array的reference的dereference

在subroutine中,我们可以使用@{$array_ref}来dereference;取得第一个元素${$array_ref}[0];

如果只是dereference一个简单的scalar变量,可以忽略括号,如下:

@$array_ref #same as @{$array_ref}

$$array_ref #same as ${$array_ref}

三、hash的reference和dereference

%author = (

'name'=>'Harsha',

'designation' => 'Manager'

);

$hash_ref = \%author;

$name = ${$hash_ref}{name}; #same as my $name = $hash_ref->{name}

my @keys = keys%{$hash_ref}; #same as my @keys = keys%author;

my $hash_ref = {

'name' =>"coco",

'designation' => 'Manager'

};#匿名引用

perl数组硬引用_perl引用和数组 - SibylY的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java 数组减除值_java数组操作 - osc_hwpd2zko的个人空间 - OSCHINA - 中文开源技术交流社区...

    什么是数组: 程序 = 算法+数据结构 算法:解决问题的步骤,流程(顺序,分支,循环) 数据结构:将数据按照某种特定的结构来保存 数怎么存 设计良好的,合理的数据结构可以导致好的算法 数组:就是一种最 ...

  2. python数组和链表的区别_数组和链表的区别 - toddler的个人空间 - OSCHINA - 中文开源技术交流社区...

    数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中.同 ...

  3. linux 变量引用 和 变量的自动类型转换 c++,c++类型转换 - memristor的个人空间 - OSCHINA - 中文开源技术交流社区...

    C风格的强制类型转换(Type Cast) 不管什么类型的转换统统是:TYPE b = (TYPE)a. 缺点: 可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const ...

  4. c语言怎样将字符串存入指针属猪,字符数组全排列 - Lu堅的个人空间 - OSCHINA - 中文开源技术交流社区...

    // win32Console.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include //参数为引用,函数调用多,所以定义我内联 ...

  5. php循环遍历数组保存数据库,php数组循环遍历 - 与狼共舞红队的个人空间 - OSCHINA - 中文开源技术交流社区...

    下面这三种是常用的 $_arr=array(); foreach($_arr as $key=>$value){ var_dump($key,$value); echo " " ...

  6. c语言 开辟复数指针数组,指针和数组 - llwwzz的个人空间 - OSCHINA - 中文开源技术交流社区...

    指针的几个要点: 一 指针的定义,赋值 要区分: int a; int *p = &a; 这是定义的时候初始化,即赋值 ======================= int a; int * ...

  7. android 数组排重方法,js数组去重方法集合 - osc_779ncf3o的个人空间 - OSCHINA - 中文开源技术交流社区...

    //第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', ' ...

  8. linux c 数组拷贝,C++对数组进行复制 - osc_8iux0cyz的个人空间 - OSCHINA - 中文开源技术交流社区...

    C++ 风格的复制操作 使用STL中的copy算法 int a[] = {1,2,3,4,5}; int b[5]; std::copy(std::begin(a),std::end(a),std:: ...

  9. java数组输出是地址_java数组输出 - SuperPcf的个人空间 - OSCHINA - 中文开源技术交流社区...

    java数组输出 输出一个数组中的元素,我们通常用for循环来做,比如: [java] view plaincopy在CODE上查看代码片派生到我的代码片 package test; public c ...

最新文章

  1. Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck
  2. 马云最新演讲:未来10年,人类将面临AI、IoT和区块链等三大技术巨大挑战!
  3. oracle rman catalogo,ORACLE 11g RMAN备份恢复--catalog
  4. 已知一个函数f可以等概率的得到1-5间的随机数,问怎么等概率的得到1-7的随机数...
  5. 用折半查找法查找某一字符在字符串中的位置
  6. Matlab线性规划求解
  7. 松下电视切换html,松下等离子电视如何用HDMI连接电脑?
  8. ERROR 1018 (HY000): Can‘t read dir of ‘.‘ (errno: 13 - Permission denied)
  9. 左手招新,右手裁员,2019开年就业形势扑朔迷离
  10. nokia专业显示器测试软件,Nokia Monitor Test(
  11. 平板电脑触摸屏市场现状及未来发展趋势
  12. 引用与引用作为函数的参数
  13. DOS时代往事的回忆
  14. 计算机与汽车智能信息化管理,谈计算机控制系统在汽车行业的应用
  15. 2020-10-18大二第七周
  16. 以太网口差分电平_百兆以太网接口高速PCB布局布线指南
  17. Camtasia Studio2021-激活码-序列号-秘钥中文版下载安装最新详情介绍
  18. 新站是如何做到百度秒录入
  19. 【华人学者风采】张磊 香港理工大学
  20. 灵遁者小说:你无处可藏

热门文章

  1. Java基础点:多线程
  2. 第二十三讲 狄拉克函数(冲激函数)(补充)
  3. 第十八讲 傅里叶变换
  4. accelerated C++ 第0章
  5. 51nod 2497 数三角形
  6. UVALive 3905 Meteor (扫描线)
  7. 玩转百度地图(二)之画圆,高德地图、搜搜地图、搜狗地图等稍微修改即可...
  8. @@ROWCOUNT 含义
  9. 方法描述Mybatis使用之NEIS项目
  10. 建立可扩展的silverlight应用框架