尝尽世间绚烂 2010-07-13
本文和大家重点讨论一下Perl变量的概念,在Perl中Perl变量有三种,分别是纯Perl变量,数组,和关联数组。那么这三种Perl变量有什么特点和作用呢,请看本文详细介绍。
Perl变量
Perl有三种Perl变量:
纯Perl变量(ScalarVarible)
数组(Array)
关联数组(Associativearray)
一、纯变量
又称标量Perl变量,是Perl处理的最简单的数据类型。标量可以是数字(如2,3或2.5e6),也可以是字符串(如“hello”和“网上学园”)。
Perl中的标量Perl变量以美元符号$和一个字母开始,以后可以是字母、数字和下划线,大小写有区别,而且所有字母、数字和下划线都有效。如:
$a和$A是不同的Perl变量;
$this_is_a_long_variable_1和
$this_is_a_long_variable_2是不同的Perl变量;
Perl中的Perl变量可以通过操作符(如+或.等)来产生新的Perl变量。你可以从文件和设备中读取Perl变量,也可以将其输出。
使用纯量Perl变量时要在前面加上$符号,注意:指定的纯Perl变量是一个字符的话,就要加上""双引号或单引号;如果是数值的话,就不用加上""这个符号。
标量数据又可以分为数字和字符串两种:
数字
可分为整型Perl变量和浮点Perl变量。
整型Perl变量:(如2,-200,3568等)。Perl支持8进制和16进制Perl变量,8进制以0开头(如0255,表示8进制的255),16进制以0x或0X开头(如-0x1a,代表负的1A)
实型Perl变量:(如2.5,-6.3e5,-2.3-e6等)。
字符串
最短的字符串可以没字符,最长可以把你的内存填满,这与Perl的“无内置限制”的原则一致。
字符串有两种格式:单引字符串和双引字符串。
单引字符串(single-quotedstring):就是用单引号括起来的一串字符。该单引字符串不是字符串的一部分。引号中可以插入任何字符。只有两种情况例外,一种是中间插入单引号,并在前面有一反斜杠;一种是字符串有两个连着的反斜杠。
双引字符串(double-quotedstring):就是用双引号括起来的一串字符,其作用类似于C语言。
双引字符串中反斜杠转义表
标量Perl变量的运算符
1、赋值运算符
如:$a=23;#将23赋值给$a
$b=$a=23;#将23赋值给$a和$b
$b=3+($a=2);#将2赋值给$a,再加3将值赋给$b,即$b为5
2、二元赋值运算符
如:$a=+3;#等同于$a=$a+3
这与C语言中基本相同。
3、自增自减运算符
如:$a++;#等同于$a=$a+1
这与C语言中基本相同。
4、chop()运算符
如:$a="hello";
chop($a);#此时$a的值为"hell"。
这对于从屏幕获取文本后去除换行符很有用。
如:$a=<STDIN>;#获取文本
chop($a);#去除最后的换行符。
这两行可合并为:
chop($a=<STDIN>);
5、字符串的标量插入值
如:$a="zmd";
$b="hello!$a";
$b的值为"hello!zmd"。
综合示例
二、数组
数组是标量数据的有序列表。
数组可以含任意多个元素。最小的数组可以不含元素,而最大的数组可以占满全部可用内存。
数组实量(arrayliteral)是位于括号内用逗号分开的一系列值。如:
(1,2,3,4,5)#具有1,2,3,4,5五个数值的数组
("zmd",1974,173.5)#具有"zmd",1974,173.5三个数值的数组
()#空数组
($a,5)#两个数值:$a的值和5
($a+$b,6)#两个数值
数组Perl变量具有单独的数组值,要以@打头而不是$。如:@zmd
注意@zmd与$zmd没任何联系。Perl为对象的不同类型保留独立的命名空间。
数组的赋值和标量赋值一样,也用等号表示。Perl根据赋值对象是标量还是数组Perl变量来确定赋值操作是标量赋值还是数组赋值。
若数组实量中只含有Perl变量引用(不是表达式),则此数组实量也可作为Perl变量使用。它可以用在赋值运算符的左边。例如:
($a,$b,$c)=(1,2,3)#将1赋给$a,2赋给$2,3赋给$3
如果把数值Perl变量赋给标量Perl变量,则赋给标量Perl变量的就是数组长度,如:
@zmd=(1,2,3)#将(1,2,3)赋给@zmd
$a=@zmd#$a为3,即@zmd的数组个数
数组元素的访问和C语言中类似,下标是按顺序整数排列的,编号从0开始。
($a,$b,$c)=(1,2,3)#将1赋给$a,2赋给$2,3赋给$3
如果把数值Perl变量赋给标量Perl变量,则赋给标量Perl变量的就是数组长度,如:
@zmd=(1,2,3)#将(1,2,3)赋给@zmd
$a=@zmd#$a为3,即@zmd的数组个数
综合举例
三、关联数组
Perl变量的关联数组和前面说的数组类似,它包含标量数据,可用索引值来单独选择这些数据,和数组不同的是,关联数组的索引值不是非负的整数而是任意的标量。这些标量称为Keys,可以在以后用于检索数组中的数值。
关联数组的元素没有特定的顺序,你可以把它们想象为一组卡片。每张卡片上半部分是索引而下半部分是数值。
关联数组是Perl语言中特有的,关联数组是一个功能强大的数组。使用关联数组时要在前面加上%号,关联数组的格式如:
%ARRAY=(key1,value1,key2,value2,key3,value3);
每一个key都有一个相对应的值(value)。
和数组类似,$zmd,@zmd,%zmd之间没有任何联系。Perl为对象的不同类型保留独立的命名空间。
Perl变量中关联数组的操作:
在关联数组中增加、更改一对数据:ARRAY={key}=value;在关联数组ARRAY中加上一对key-value,要在关联数组名称前加上$号,而且key的名称要在{}符号之间,最后再指定key所对应的value值。如果在这个关联数组中已经有这个key了.就会更改这个key所对应的value。
keys(%array)操作符可生成由关联数组%array中的所有当前关键字组成的列表。即返回奇数个元素(第1,3,5,7...个)的列表。
values(%array)操作符返回由关联数组%array中所有当前值组成的列表,即返回偶数个列表。
echo(%array)操作符返回由一个关键字和一个值对构成的两个元素的表。对同一数组再操作时返回下一对值直至结束。若没有更多的对时,echo()返回空表。(这在打印全部列表中很有用)
删除一对在关联数组中的数据:delete$ARRAY{key};delete是Perl所提供的函数,作用是删除关联数组中的一个key以及这个key所对应的value。使用方法是在delete函数之后,指定关联数组中要删除的key名称。