`
725137
  • 浏览: 80493 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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 ("first value is ", $value, "\n");
  $value = 9.01e+21 - 9.01e+21 + 0.01;
  print ("second value is ", $value, "\n");

  ---------------------------------------------------------

  $ program3_3
  first value is 0
  second value is 0.01

 

可以看到,不同的运算顺序可能导致的结果不一样!在Perl中十进制数字用0x开头表示.0开头表示一个8进制数。Perl对数学运算的操作符有:

算术操作符 :+(加)、-(减)、*(乘)、/(除)、**(乘幂)、%(取余)、-(单目负)

(1)前面几个不用说了吧.说一下乘幂这里需要注册,基数不能为负数.
(2)单目负又是什么意思?他实际上就是一个负号。就是数学中的负数表示符。

算术比较符:

==(相等),<(小于),>(大于),!=(不等于),还有一个<=>(表示可以取三个数-1,0,1);

 

 

标量除了是一个数字,字符串之外,还可以是其它复杂类型的引用.这点请暂时记住.我将在后面详细说明这个问题.

 

现在来说下字符串,Perl采用unicode表示一个数值,这就意味着和java一样,可以表示世界上任何一个国家的语言文字,对于字符串的运算符有

.(相连) 

比较符:lt(小于),gt(大于),ne(不等于),eq(等于),le(小于等于),ge(大于等于),需要说明的的是。字符串的运算是按Ascii来进行运算的。就是说a(Ascii值为97),A(ASCII值为65),结果就是: a gt A

 

 

另一种变量叫做数组变量.数组大家都知道,表示一组数据的集合.数据型可以分为有序的数组和无序的列表.他通常相当于英语中的复数.还有一种叫散列.他是一种特殊的数组.用Key+value的形式来表示.相当于Java中的Map.是按键值对来存放的.

 

我们用$表示一个标量,用@表示一个列表和数组.用%表示一个散列.

 

举例说明:

@lines = ("a","b","c");

这样就定义了一个数组,他里面有三个元素 a b c ,定义数组时用()号把中间元素包扩起来.里面用,号分开,

也可以写成这样

@lines=qw(a b c d);

注意用qw定义时,里面不能写,号.这点请记住它!,而且qw里面只能是字符的原型,比如说,你给成这样

$a ="a";

@lines=qw($a b c d);将$a这个变量传进来,你的目的是这样,但是我告诉你这达不到你希望的效果.

他会原封不动的给你显示出来.这也正好说明了这里不能给a b c d 加个双引号.

 

 

%person 表示一个散列.

要对这个散列进行给值.使用

$person{"name"}="Hello";

也可以使用%person= ("a","b","c","d")这样的形式,我们说过,散列表示一个key/value的集合,所以perl会将这样的列表形式的数组按照key/value进行转换. 每两个一组,前面是键,后面是值.

当然这样的形式并不好看.

 

我们还可以写成

 

%person= ("a"=>"b","c"=>"d").

 

你可以直接把一个数组表示的变量给一个散列.用(),你也可以把一个散列的具体值指向另一个散列.

%person{"a"}={

 "name"=>"zhangsan",

 "age"=>"23",

}

通过 $person{"a"}{"name"}访问到zhangsan;

 

不仅如此,你还可以将一个散列的具体值指向一个数量.

%person{"a"}=["a1","a2","a3"];

通过$person{"a"}[0]访问到a1;

 

 

 

 

 

有了这样的机制我们很容易建立出类似多维数组一样的东西!好了,是不是很简单呢?

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics