perl 引用(一)
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 引用(一)的更多相关文章
- Perl 引用:引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序。
Perl 引用引用就是指针,Perl 引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 1.创建引用1.使用斜线\定义变量的时候,在变量名前面加个\, ...
- 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 ...
- Perl引用
引用就是C语言中的指针,perl引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 在变量前面加一个\就得到了这个变量的一个引用 #!usr/bin/p ...
- Perl 引用与匿名数组
写这篇是因为工作遇到一个需要使用列表作为hash的值的问题,这在Python中是非常简单而轻松的事,如下面这段python程序. def add_to_index(index, keyword, ur ...
- Perl引用入门
在perl中只有3种基本的数据结构:标量.数组.hash.变量可以是数值,可以是字符串. 这三种基本数据结构的数据存储方式如下: 但是,仅仅由这3种基本结构,就可以构造出更复杂的数据结构,例如hash ...
- perl 引用
数组的数组 $a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 哈希的哈希 my $student_properties_of = { 'zdd' => { 'ag ...
- [Perl系列—] 2. Perl 中的引用使用方法
Perl 中的引用,为什么要使用引用? 对于熟悉C语言的开发人员来说, 指针这个概念一定不陌生. Perl 的引用就是指针,能够指向变量.数组.哈希表甚至子程序. Perl5中的两种Perl引用类型为 ...
- Perl系列文章
0.Perl书籍推荐 Perl书籍下载 密码:kkqx 下面是一些我学习Perl过程中读过完整的或部分章节的觉得好的书. 入门级别1:<Perl语言入门>即小骆驼 入门级别2:<In ...
- 读写生信流程必备的 Perl 语法
最早就是写Perl的,后来来到公司转Python,现在又要负责流程了,开始重拾Perl,当然是借鉴别人现有的语法,我再重新组合. 基本语法就不介绍了,参照我之前文章 Perl 模块 use str ...
随机推荐
- Linux静态库生成指南
Linux静态库生成指南 Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...
- mapreduce 模板
/*** * MapReduce Module * @author nele * */ public class ModuleMapReduce extends Configured implemen ...
- apt-get方式安装lnmp环境
安装nginxsudo apt-get install nginx安装php和mysqlsudo apt-get install php5-cli php5-cgi php5-curl php5-my ...
- CF469D Two Set (并查集)
Codeforces Round #268 (Div. 2)D Codeforces Round #268 (Div. 1)B CF468B D. Two Sets time limit per te ...
- 导航菜单:jQuery粘性滚动导航栏效果
粘性滚动是当导航在滚动过程中会占粘于浏览器上,达到方便网站页面浏览的效果,也是一种用户体验,下面我们看一下是怎么实现的: jQuery的 smint插件,也是一个导航菜单固定插件.当页滚动时,导航菜单 ...
- Tomcat 6 —— Realm域管理
本篇来源于官方文档,但不仅仅是翻译,其中不乏网上搜索的资料与自己的理解. 如有错误,请予指正. 什么是Realm 首先说一下什么是Realm,可以把它理解成“域”,也可以理解成“组”,因为它类似 类U ...
- 基础知识系列☞IList ←vs→ List
原文地址→http://www.cnblogs.com/zbphot/archive/2011/11/04/2235933.html IList接口→表示可按照索引单独访问的对象的非泛型集合. ILi ...
- bzoj1179 [Apio2009]Atm
Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...
- Sublim text2 的注册码
1. Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC99798F 942194A6 02396E9 ...
- 教你如何删除tomcat服务器的stdout.log文件
用Tomcat做WEB服务器的人都知道,有个很让人头痛的问题,就是stdout.log日志文件会自动增长,而且增长得很快. 先来看看我的痛处吧,公司有个WEB应用,就是用Tomcat作为服务器的,由于 ...