`
blue_halo
  • 浏览: 83762 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

perl中的引用类型

    博客分类:
  • ruby
阅读更多

概括:

可以把perl中的引用联想成c++或者java中的引用类型,可以简单的认为就是一个指针(可以想象成句柄,不是简单通过访问地址取得值),所以引用是一个标量。

 

一、取得标量的引用

$a=1;  #a代表$a的首地址,$可以想象长c中的*,$a是这个地址里的值。

$b=\$a; (可以把\想象成&)

# b 是 $a地址的地址,$b是$a的地址,$$b是$a的值。

 

当然也可以取得常量的应用 $b=\123,不过这样好像没有什么意义。

 

二、取得数组的引用

@arr1=(1,2,3); #可以理解为arr1为数组的首地址,前面加上@可以代表整个数组。

$b=\@arr1;      # b是数组首地址的地址,$b是数组的首地址,@$b代表整个数组。

$$b[0] 第一个元素。

$b->[0] 同上

 

对列表进行引用的结果只能获得列表最后一个元素的引用。

 

三、取得hash的引用

%hash1=("one"=>1,"two"=2,"three=>3");

$b=\%hash1;

原理和数组相同。

 

四、取得函数的引用

sub fun1
{
	print("good!");	
}

$a=\&fun1; #$a是函数fun1的首地址。
&$a();  #&把首地址当成是函数来解释。

 

$a = sub
{
	print("good!");	
};

&$a(); #匿名的函数,相当于$a存储了函数的首地址。

 

 

五、符号引用

$a=1;

$b="a"; #可以认为是引用的另一种书写方式,但是只有当$b在被当成引用解释的环境中才会生效。

print($$b); #输出1

 

 

 

 

 

分享到:
评论

相关推荐

    Perl 实例精解(第三版).pdf

    13.5.2 标准Perl库中面向对象的模块 13.5.3 使用标准Perl库中的模块 练习13 这一课的对象是什么 练习14 函数Pod中的Perl 第14章 tie函数,DBM文件和数据库挂钩 14.1 连接变量与类 14.1.1 tie函数 ...

    PERL语言编程

    Perl 的类型和结构很容易使用和理解。Perl 对你的数据没有任何限制--你的字串和数组可以要多长就多长(只要你有足够的内存),而且它们都会自动增长。Perl 不会强迫你学习新的语法和语意,Perl 改从许多其它你已经...

    Perl 引用

    引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方。 创建引用 定义变量的时候,在变量名前面加个,就得到了这个变量的一个引用,比如: $...

    Perl高级教程人称“大骆驼”(免费)

    第一章 Perl概述............................................................................................................................10 1.1 从头开始.................................................

    MySQL 5.1中文手冊

    2.13.1. 在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. ...

    MYSQL中文手册

    2.13.1. 在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 ...

    Gnr2SgPl:用于将交叉引用从通用入门级集合转换为单向单数复数对的代码

    通用到单数/复数交叉引用转换介绍此仓库包含用于将“交叉引用”从“通用入门级集合”转换为“单向单数/复数”对的脚本。...准备基础设施此仓库中的脚本需要Linux bash和正确配置的perl系统。如果您按照此处的

    Data-Transform-ExplicitMetadata:Data-Transform-ExplicitMetadata 的只读发布历史记录

    该模块将 perl 数据结构转换为可以安全地进行 JSON 编码的数据结构,同时维护无法直接在 JSON 中表达的 Perl 特定元数据,例如祝福和绑定引用、自引用数据、类型团、引用地址等。 在去校准时,它会尽可能地重新...

    MYSQL网络数据库PDF学习资源

    2.3.1 列中存储何种类型的值 82 2.3.2 列值有特定的取值范围吗 84 2.3.3 性能与效率问题 85 2.3.4 希望对值进行什么样的比较 87 2.3.5 计划对列进行索引吗 87 2.3.6 列类型选择问题的相互关联程度 88 2.4 表达式求值...

    COMP9041-18S2:COMP9041软件构建2018S2

    COMP9041-18S2 COMP9041软件构建2018S2 应该适当地引用所有代码,复制可能会导致抄袭讲师:安德鲁·泰勒主要内容Shell :Unix进程,基本Shell命令(剪切,排序,sed,tr ...)以及正则表达式中的更多内容。...

    mysql网络数据库指南(中文版) part1

    2.3.1 列中存储何种类型的值 82 2.3.2 列值有特定的取值范围吗 84 2.3.3 性能与效率问题 85 2.3.4 希望对值进行什么样的比较 87 2.3.5 计划对列进行索引吗 87 2.3.6 列类型选择问题的相互关联程度 88 2.4 ...

    内存管理内存管理内存管理

    文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存,以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的...

    mysql官方中文参考手册

    2.13.1. 在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. ...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    MySQL 5.1官方简体中文参考手册

    2.13.1. 在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. ...

    JavaScript类型系统之正则表达式

    javascript通过RegExp类型来支持正则表达式 特性  [1]贪婪性,匹配最长的  [2]懒惰性,不设置/g,则只匹配第1个 写法 perl写法(使用字面量形式) var expression = /pattern/flags;  模式(pattern)部分可以...

    操作系统(内存管理)

    文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存,以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的...

    PHP bible(PHP圣经)中文版

    引用文件 程序注释 常量与变量 常量类型 变量类型 变量的使用 运算符号 算术运算 字符串运算 赋值运算 位运算 逻辑运算 其它运算符号 流程控制 if..else 循环 do..while 循环 for 循环 switch 循环...

    mysql5.1中文手册

    在Unix中安装Perl 2.13.2. 在Windows下安装ActiveState Perl 2.13.3. 使用Perl DBI/DBD接口的问题 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择...

    ECMAScript 基础知识

    –和Java一样,ECMAScript区分大小写,注释的格式相同,通过{}确定代码块,原始数据类型存储在堆栈,对象的引用存储在堆中 –ECMAScript是一种松散的语言,ECMAScript通过var操作符声明变量,并且不限类型,例如var...

Global site tag (gtag.js) - Google Analytics