本文和大家重点学习一下Perl变量的相关知识,Perl中的变量可以通过操作符(如+或.等)来产生新的变量。你可以从文件和设备中读取变量,也可以将其输出。
Perl学习笔记 Perl变量的认识
Perl标量的学习
任何语言都有Perl变量,Perl变量在Perl中简单的分为标量和组数Perl变量.
标量:表示单个的量,即英文中所说的单数.
例如:
- $name="Hello"';
- $age=18;
- $price=123.88;
- $price=343_333_333.898;
都是一个标量,Perl对数字标量在计算机中采用浮点数形式存贮。通常浮点数的精度是不够准确的。这点需要特别注意。
下面是一个例子:
- #!/usr/local/bin/perl
- $value=9.01e+21+0.01-9.01e+21;
- print("firstvalueis",$value,"\n");
- $value=9.01e+21-9.01e+21+0.01;
- print("secondvalueis",$value,"\n");
- ---------------------------------------------------------
- $program3_3
- firstvalueis0
- secondvalueis0.01
可以看到,不同的运算顺序可能导致的结果不一样!在Perl中十进制数字用0x开头表示.0开头表示一个8进制数。Perl对数学运算的操作符有:
算术操作符:+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)
(1)前面几个不用说了吧.说一下乘幂这里需要注册,基数不能为负数.
(2)单目负又是什么意思?他实际上就是一个负号。就是数学中的负数表示符。
Perl变量的算术比较符:
==(相等),<(小于),>(大于),!=(不等于),还有一个<=>(表示可以取三个数-1,0,1);
标量除了是一个数字,字符串之外,还可以是其它复杂类型的引用.这点请暂时记住.我将在后面详细说明这个问题.
现在来说下字符串,Perl采用unicode表示一个数值,这就意味着和java一样,可以表示世界上任何一个国家的语言文字,对于字符串的运算符有
.(相连)
比较符:lt(小于),gt(大于),ne(不等于),eq(等于),le(小于等于),ge(大于等于),需要说明的的是。字符串的运算是按Ascii来进行运算的。就是说a(Ascii值为97),A(ASCII值为65),结果就是:agtA
另一种Perl变量叫做数组Perl变量.数组大家都知道,表示一组数据的集合.数据型可以分为有序的数组和无序的列表.他通常相当于英语中的复数.还有一种叫散列.他是一种特殊的数组.用Key+value的形式来表示.相当于Java中的Map.是按键值对来存放的.
我们用$表示一个标量,用@表示一个列表和数组.用%表示一个散列.
举例说明:
@lines=("a","b","c");
这样就定义了一个数组,他里面有三个元素abc,定义数组时用()号把中间元素包扩起来.里面用,号分开,也可以写成这样:@lines=qw(abcd);
注意用qw定义时,里面不能写,号.这点请记住它!,而且qw里面只能是字符的原型,比如说,你给成这样:$a="a";@lines=qw($abcd);
将$a这个Perl变量传进来,你的目的是这样,但是我告诉你这达不到你希望的效果.
他会原封不动的给你显示出来.这也正好说明了这里不能给abcd加个双引号.
%person表示一个散列.
要对这个散列进行给值.使用$person{"name"}="Hello";
也可以使用%person=("a","b","c","d")这样的形式,我们说过,散列表示一个key/value的集合,所以perl会将这样的列表形式的数组按照key/value进行转换.每两个一组,前面是键,后面是值.
当然这样的形式并不好看.
我们还可以写成;%person=("a"=>"b","c"=>"d").
你可以直接把一个数组表示的Perl变量给一个散列.用(),你也可以把一个散列的具体值指向另一个散列.
%person{"a"}={
"name"=>"zhangsan",
"age"=>"23",
}
通过$person{"a"}{"name"}访问到zhangsan;
不仅如此,你还可以将一个散列的具体值指向一个数量.
%person{"a"}=["a1","a2","a3"];
通过$person{"a"}[0]访问到a1;
有了这样的机制我们很容易建立出类似多维数组一样的东西!好了,是不是很简单呢?
【编辑推荐】