文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院网络编程CGI/PerlPerl教学 第十二篇 Perl5中的引用(指针)
精品广告
推荐TOP10
·在CGI中如何使用cookie的方法
·CGI脚本在WIN2000、WINNT下安装
阅读TOP10
·Linux系统环境下的Socket编程详细解析
·CGI 安全问题
·用机器生成的音乐监控Linux 计算机
·Perl教学 目录
·Perl教学 第一篇 概述
·Perl教学 第二篇 简单变量
·Perl教学 第三篇 操作符
·Perl教学 第四篇 列表和数组变量
·Perl教学 第五篇 文件读写
·Perl教学 第六篇 模式匹配

Perl教学 第十二篇 Perl5中的引用(指针)

日期:2007年5月10日 作者: 查看:[大字体 中字体 小字体]


一、引用简介
引用就是指针,可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。Pascal或C程序员应该对引用(即指针)的概念很熟悉,引用就是某值的地址,对其的使用则取决于程序员和语言的规定。在Perl中,可以把引用称为指针,二者是通用的,无差别的。引用在创建复杂数据方面十分有用。
Perl5中的两种引用类型为硬引用和符号引用。符号引用含有变量的名字,它对运行时创建变量名并定位很有用,基本上,符号引用就象文件名或UNIX系统中的软链接。而硬引用则象文件系统中的硬链接。
Perl4只允许符号引用,给使用造成一些困难。例如,只允许通过名字对包的符号名哈希表(名为_main{})建立索引。Perl5则允许数据的硬引用,方便多了。
硬引用跟踪引用的计数,当其数为零时,Perl自动将被引用的项目释放,如果该项目是对象,则析构释放到内存池中。Perl本身就是个面向对象的语言,因为Perl中的任何东西都是对象,包和模块使得对象更易于使用。
简单变量的硬引用很简单,对于非简单变量的引用,你必须显式地解除引用并告诉其应如何做,详见《第 章Perl中的面向对象编程》。
二、使用引用

本章中,简单变量指像$pointer这样的变量,$pointer仅含一个数据项,其可以为数字、字符串或地址。
任何简单变量均可保存硬引用。因为数组和哈希表含有多个简单变量,所以可以建立多种组合而成的复杂的数据结构,如数组的数组、哈希表的数组、子程序的哈希表等等。只要你理解其实只是在用简单变量在工作,就应该可以正确的在最复杂的结构中正确地解除引用。
首先来看一些基本要点。
如果$pointer的值为一个数组的指针,则通过形式@$pointer来访问数组中的元素。形式@$pointer的意义为“取出$pointer中的地址值当作数组使用”。类似的,%$pointer为指向哈希表中第一个元素的引用。
有多种构建引用的方法,几乎可以对任何数据建立引用,如数组、简单变量、子程序、文件句柄,以及--C程序员会感兴趣的--引用。Perl使你有能力写出把自己都搞糊涂的极其复杂的代码。:)
下面看看Perl中创建和使用引用的方法。
三、使用反斜线(\)操作符
反斜线操作符与C语言中传递地址的操作符&功能类似。一般是用\创建变量又一个新的引用。下面为创建简单变量的引用的例子:
$variavle = 22;
$pointer = \$variable;
$ice = "jello";
$iceprt = \$ice;
引用$pointer指向存有$variable值的位置,引用$iceptr指向"jello"。即使最初的引用$variable销毁了,仍然可以通过$pointer访问该值,这是一个硬引用,所以必须同时销毁$pointer和$variable以便该空间释放到内存池中。
在上面的例子中,引用变量$pointer存的是$variable的地址,而不是值本身,要获得值,形式为两个$符号,如下:


#!/usr/bin/perl
$value = 10;
$pointer = \$value;
printf "\n Pointer Address $pointer of $value \n";
printf "\n What Pointer *($pointer) points to $$pointer\n";
结果输出如下:

Pointer Address SCALAR(0x806c520) of 10
What Pointer *(SCALAR(0x806c520)) points to 10
每次运行,输出结果中的地址会有所改变,但可以看到$pointer给出地址,而$$pointer给出$variable的值。
看一下地址的显示,SCALAR后面一串十六进制,SCALAR说明该地址指向简单变量(即标量),后面的数字是实际存贮值的地址。
注意:指针就是地址,通过指针可以访问该地址处存贮的数据。如果指针指向了无效的地址,就会得到不正确的数据。通常情况下,Perl会返回NULL值,但不该依赖于此,一定要在程序中把所有的指针正确地初始化,指向有效的数据项。
四、引用和数组
关于Perl语言应该记住的最重要的一点可能是:Perl中的数组和哈希表始终是一维的。因此,数组和哈希表只保存标量值,不直接存贮数组或其它的复杂数据结构。数组的成员要么是数(或字符串)要么是引用。

[1] [2] [3] [4] [5] [6] 下一页 

上一篇:Perl教学 第十三篇 Perl的面向对象编程

下一篇:Perl教学 第十一篇 文件系统


相关软件: 相关文章:
·Perl教学 第十二篇 Perl5中的引用(指针)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号