perl 中的引用

perl 语言中的引用共分为两类:

声明引用时只需要在对象的前面加上反斜杠

第一列是数组的引用:

代码示例:

my @array     = (1, 2, 3);
my $array_ref = \@array;

第二种是哈希的引用

代码示例:

my %hash     = (1, 2, 3, 4);
my $hash_ref = \@hash;

通过引用去访问对应的值,通过 -> 操作符

数组的引用, 通过 [ ] 中括号 加上对应的下标,代码示例:

my @array     = (1, 2, 3);
my $array_ref = \@array;
print $array_ref->[0];

哈希的引用,通过{}  大括号加上对应的key,代码示例:

my %hash     = (1, 2, 3, 4);
my $hash_ref = \@hash;
print $array_ref->{1};

当我们想要把引用对应的变量传递给另外一个变量时,就需要解引用,使用 { } 大括号

代码示例:

my @array     = (1, 2, 3);
my $array_ref = \@array;
my @array_new = @{$array_ref};

my %hash     = (1, 2, 3, 4);
my $hash_ref = \@hash;
my %hash_new = %{$hash_ref};

数组的引用通过 @ 符号 , 哈希的引用通过 % 符号;

引用实际上存储的是所引用对象的地址,举个例子

perl -e ‘my @a = (1, 2, 3, 4);my $b = \@a;print qq{$b\n};‘
ARRAY(0x122bae8)

perl -e ‘my %a = (1, 2, 3, 4);my $b = \%a;print qq{$b\n};‘
HASH(0x262dae8)

从上述代码的运行结果可以看出,数组的引用对应的值是 ARRAY+ 地址,哈希的引用是HASH+ 地址,这里的地址是一个16进制的值

除了使用 \ 符号, 声明一个引用外,还可以声明一个匿名引用, 数组的引用使用 [  ] 操作符, 哈希的引用使用 {  } 操作符;

代码示例:

my $array_ref = [1, 2, 3, 4];
my $hash_ref  = {1, 2, 3, 4}

print $array_ref->[0];
print $hash_ref->{1};
时间: 2024-08-12 23:51:17

perl 中的引用的相关文章

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

Perl 中的引用,为什么要使用引用? 对于熟悉C语言的开发者来说, 指针这个概念一定不陌生. Perl 的引用就是指针,可以指向变量.数组.哈希表甚至子程序. Perl5中的两种Perl引用类型为硬Perl引用和符号Perl引用.符号Perl引用含有变量的名字,它对运行时创建变量名并定位很有用,基本上,符号Perl引用就象文件名或UNIX系统中的软链接.而硬Perl引用则象文件系统中的硬链接. Perl4只允许符号Perl引用,给使用造成一些困难.例如,只允许通过名字对包的符号名哈希表(名为_

【转载】Perl中的引用

为什么使用引用? 在perl4中,hash表中的value字段只能是scalar,而不能是list,这对于有些情况是很不方便的,比如有下面的数据: Chicago, USAFrankfurt, GermanyBerlin, GermanyWashington, USAHelsinki, FinlandNew York, USA 我们想要按国家将城市分类,每个国家后面对应城市列表,如果用perl4来做,必须将城市列表组合成字符串才行,如果用perl5就可以用引用来做,有了引用,就可以构造复杂的ha

Perl中的真与假

Perl认为真值是自明的(self-evident), 表示任何事物的真值都可以计算.Perl以实用的方式来定义真值,即一个实体的真值取决于这个实体的类型.Perl总是乐观的认为:这个世界上真的东西远比假的东西多的多. Perl区别与任何其他计算机语言,Perl是语言学家创造的,而语言的意思离不开上下文语境,所以Perl中的真值都可以在标量(标量$与数组@类似于英文中的单数与复数, book 与 books的区别, 真值在现实世界中,应该就是单数,所以是标量)计算,除此之外,不会做任何类型的强制

Perl中Schwartzian转换问题

Perl中著名的Schwartzian转换,其产生背景主要涉及到排序问题: 比如说,根据文件名以字母顺序排序,代码如下: use strict; use warnings; my @files = glob "*.xml"; #perl中文件操作符glob提供相当于shell中的通配符的功能 my @sorted_files = sort @files; #sort(),排序,默认是字母顺序排序 比如说,根据文件名长度排序,其代码如下: use strict; use warnings

perl5 第十二章 Perl5中的引用/指针

第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句柄的引用 一.引用简介    引用就是指针,可以指向变量.数组.哈希表(也叫关联数组)甚至子程序.Pascal或C程序员应该对引用(即指针)的概念很熟悉,引用就是某值的地址,对其的使用则取决于程序员和语言的规定.在Perl中,可以把引用称为指针,二者是通用的,无差别的.引用在创建复杂数据方面十分有用

Perl中的面向对象编程

一.模块简介 模块(module)就是Perl包(package).Perl的对象基于对包中数据项的引用. 在用其它语言进行面向对象编程时,先声明一个类然后创建该类的对象(实例),特定类所有对象的行为方式是相同的,由类方法确定,可以通过定义新类或从现存类继承来创建类. 类是一个Perl包,其中包含提供对象方法的类: 方法是一个Perl子程序,类名是其第一个参数: 对象是对类中数据项的引用. 二.Perl中的类 一个Perl类是一个包.Perl5用双冒号(::)来标识基本类和继承类(之类). Pe

perl中my和our的区别分析

来源: http://www.jb51.net/article/35528.htm perl中our的用法require 5.006当版本号小于 5.006 的时候,会返回失败,从而导致模块加载失败.所以它的作用就是保证模块调用环境的 Perl 版本. our 和 my 一样,都是对变量的声明,不过 our 声明的是包全局变量,而 my 声明的是词法变量. 不过,经过 our 声明的变量,它会变得像一个词法变量一样,其实这也是 our 存在的目的:用来欺骗 strict pragma,使 str

Perl5中的引用和指针

一.引用简介 引用就是指针,可以指向变量.数组.哈希表甚至是子程序. 二.使用引用 如果$pointer的值为一个数组的指针,则通过形式@$pointer来访问数组中的元素.形式@$pointer的意义为“取出$pointer中的地址值当作数组使用”.类似的,%$pointer为指向哈希表中第一个元素的引用. 三.使用反斜线(\)操作符 反斜线操作符与C语言中传递地址的操作符&功能类似.一般是用\创建变量又一个新的引用.下面为创建简单变量的引用的例子:    $variavle = 22;   

C++中的引用

引用就是某个目标变量的别名,对引用的操作与对变量的直接操作效果完全相同. 引用的声明方法:类型标识符 &引用名=目标变量名: 如下:定义引用ra,它是变量a的引用,即别名. int a; int &ra=a; 1)  声明一个引用,必须进行初始化. 2)引用声明完毕后,相当于目标变量有两个名称即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名. 3)引用本身不是一种数据类型,因此引用本身不占存储单元,系统也不会给引用分配存储单元. 4)不能建立数组的引用.因为数组是一个由若干个