1. 普通变量引用 variable reference

引用就好比C语言的指针,引用变量存储被引用变量的地址。赋值时注意要在变量前加上 \;使用时要多加一个 $ 。

当然,引用也可以成为简单变量,可以使用引用的引用,使用时要记得多加一个$.引用也可以互相赋值

 #!/usr/bin/perl  -w
my $variable="this is a reference test\n";
my $refv=\$variable;
my $refr=\$refv;
print "this is \$refv:$refv\n";
print "this is \$variable \$\$refv:$$refv";
print "this is reference's reference \$\$reference :$$refr\n";
print "this is \$variable \$\$\$refr:$$$refr";

D:\>perl reference.pl
this is $refv:SCALAR(0x468b20)
this is $variable $$refv:this is a reference test
this is reference's reference $$reference :SCALAR(0x468b20)
this is $variable $$$refr:this is a reference test

2. 数组变量引用 array reference

数组引用跟变量引用一样

 #!/usr/bin/perl  -w
my @array=qw/this is an array reference test/;
my $refa=\@array;
print "this is \@array[0]:$refa->[0]\n";
print "this is \@array[1]:$$refa[1]\n";
print "this is \@array use \@\$refa:@$refa\n";

使用一个元素 $$refa[n] 或者$refa->[n]

使用全部元素:@$refa

结果:

this is @array[0]:this
this is @array[1]:is
this is @array use @$refa:this is an array reference test

关于数组使用引用的好处 请参考:http://www.cnblogs.com/tobecrazy/archive/2013/06/11/3131887.html

3. 哈希变量引用 hash reference

哈希引用和变量引用数组引用一样,只需复制时加上\ ,使用时加上%

 #!/usr/bin/perl  -w
my %hash=('a'=>"Hash",'b'=>"reference",'c'=>"test");
my $refh=\%hash;
print "this is \$\$refh:$$refh{'a'}\n";
print "use whole hash with \%\$refh \n";
foreach $key (keys %$refh)
{
print "$key => $$refh{$key}";
print "\n";
}

%$refh 使用整个哈希

$$refh{$key} 使用一个hash 元素

运行结果:

this is $$refh:Hash
use whole hash with %$refh
c => test
a => Hash
b => reference

4. 匿名引用

a.匿名变量

$refva=\"this is anonymous variable\n";

使用方法和变量引用一样,只需要$$refva

b. 匿名数组 注意使用方括号[],使用方法同数组引用一样

$refaa=[qw/this is anonymous array/];

  c. 匿名哈希 注意使用花括号 {},使用方法同hash引用

$refha{'a'=>"Hash",'b'=>"reference",'c'=>"test" }

总结:

    1.引用赋值需要加\ ,使用时变量在引用变量前加$ ,数组加@ 哈希加%

     2.引用可以用在两个数组在函数中传递,避免数组被压缩成一个数组

     3.引用可以对匿名数组 变量 哈希使用

     4.引用可以创造perl结构体,使用二维数组(下一次总结)

perl 引用(一)的更多相关文章

  1. Perl 引用:引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。

    Perl 引用引用就是指针,Perl 引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 1.创建引用1.使用斜线\定义变量的时候,在变量名前面加个\, ...

  2. perl 引用(数组和hash引用) --- perlreftut - Mark 的一个简单的'引用'教程 ---Understand References Today. --Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)

    https://blog.csdn.net/fangwei1235/article/details/8570886 首页 博客 学院 下载 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye ...

  3. Perl引用

    引用就是C语言中的指针,perl引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 在变量前面加一个\就得到了这个变量的一个引用 #!usr/bin/p ...

  4. Perl 引用与匿名数组

    写这篇是因为工作遇到一个需要使用列表作为hash的值的问题,这在Python中是非常简单而轻松的事,如下面这段python程序. def add_to_index(index, keyword, ur ...

  5. Perl引用入门

    在perl中只有3种基本的数据结构:标量.数组.hash.变量可以是数值,可以是字符串. 这三种基本数据结构的数据存储方式如下: 但是,仅仅由这3种基本结构,就可以构造出更复杂的数据结构,例如hash ...

  6. perl 引用

    数组的数组 $a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 哈希的哈希 my $student_properties_of = { 'zdd' => { 'ag ...

  7. [Perl系列—] 2. Perl 中的引用使用方法

    Perl 中的引用,为什么要使用引用? 对于熟悉C语言的开发人员来说, 指针这个概念一定不陌生. Perl 的引用就是指针,能够指向变量.数组.哈希表甚至子程序. Perl5中的两种Perl引用类型为 ...

  8. Perl系列文章

    0.Perl书籍推荐 Perl书籍下载 密码:kkqx 下面是一些我学习Perl过程中读过完整的或部分章节的觉得好的书. 入门级别1:<Perl语言入门>即小骆驼 入门级别2:<In ...

  9. 读写生信流程必备的 Perl 语法

    最早就是写Perl的,后来来到公司转Python,现在又要负责流程了,开始重拾Perl,当然是借鉴别人现有的语法,我再重新组合. 基本语法就不介绍了,参照我之前文章 Perl   模块 use str ...

随机推荐

  1. 今天依然是 JQ点击事件之“点击淡入淡出事件”

    废话不多说,先贴代码,再解释 <script> $(document).ready(function(){ $("button").click(function(){ ...

  2. [慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定

    写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程: 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小: ...

  3. 7 天玩转 ASP.NET MVC — 第 1 天

    0. 前言正如标题「7 天玩儿转 ASP.NET MVC」所言,这是个系列文章,所以将会向大家陆续推出 7 篇.设想一下,一天一篇,你将从一个愉快的周一开始阅读,然后在周末成为一个 ASP.NET M ...

  4. 黑客攻防技术宝典Web实战篇(三)web攻击方式总结

    web攻击的手段无非就是使服务器资源耗尽,使服务器无法接收正常请求. 一.DDos攻击 二.DRDos攻击 三.慢攻击 与Ddos攻击相反,慢攻击并不是以多取胜,而是靠保持连接.

  5. 详细介绍如何在win7下首次实现通过Git bash向Github提交项目

    详细介绍如何在win7下首次实现通过Git bash向Github提交项目 引自:http://jingpin.jikexueyuan.com/article/35944.html 作者: wddoe ...

  6. noip2012 疫情控制

    [问题描述] H国有n个城市,这n个城市用n-1条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点. H国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边境城市(叶子 ...

  7. OC第七节——内存管理

    戏言: iOS开发已经到了一个ARC时代,一般不需要我们过多的去关注内存是怎么分配,怎么管理的.很长一段时间,我也不知道内存管理是什么鬼,但如果遇到这方面的问题,却找不到解决办法确实很头疼的.So,还 ...

  8. CSS选择器的特殊性和LOVE HA

    在CSS中当几个相同的选择器对同一个元素有不同的规则时,该怎么应用这些规则呢? 答案就是:CSS特殊性(CSS specificity) 选择器特殊性有选择器本身组成,特殊性由4个数值表述:0, 0, ...

  9. MySQL Python教程(4)

    Class cursor.MySQLCursorBuffered 该类从Class cursor.MySQLCursorBuffered继承,如果需要,可以在执行完SQL语句后自动缓冲结果集合.imp ...

  10. formValidator的一些验证实例

    原帖地址:http://www.cnblogs.com/talk/archive/2012/01/29/2330887.html $(function () { try { $.formValidat ...