perl 基本语法

转载出处:http://blog.sina.com.cn/s/blog_635ff3050102v2dp.html

一.数据类型(Data type):
                     Perl 的数据类型大致分为四种:Scalar(变量)、Scalar Array(数组)、Hash Array(散列)、            
           References(指针).

1 . Scalar(纯量变量): 
      纯量变量是Perl里最基本的一种数据型态,它可以代表一个字符、字符串、整数、甚至浮点数,而Perl把它们都看成是一样的东东!
  # 井字号开头的后面都是批注。 
  # 纯量变数以$开头。 
  # my 是一种宣告变量的方式,它可以使变量区域化。
  # 宣告变量时若不加 my 或 local 则Perl会把它当作全域变量使用。
   # 习惯上,我们会将字符串用双引号括起来,而数值就不用加引号。
      my $x="abc";
      my $x=123;
      my $x=4.56;

1-1 常用的操作运算符

1)、算术运算符 
      +(加)、-(减)、*(乘)、/(除)、**(幂)、%(余)、-(负) 
      
     (1)求幂(**)
            结果不能超出数的范围。当指数为小数时,底数不能为负数
            例如:25**1.5=125,(-25)**1.5=?(不成立) 
     (2)取余(%)
            操作数为整数,否则要截取。第二个数不能为0(因为除数不能为0) 
     (3)负(-)
            -$a=$a*(-1) 
            
      此外,注意当一个字符串参加运算,需要转化为整数时,如果不能转化为整数则值为0。例如:'2'+1=3,'a'+1=1
      
2)、数字比较运算符 
      <(小于)、=(等于)、>(大于)、==(等于)、<=(小于等于)、>=(大于等于)、!=(不等于)、<=>(比较) 
      
     (1)==:比较运算,比较的结果为真或非零,假或零 
     (2)<=>:比较运算 
                 例如:$a<=>$b,当$a>$b时,值为1;当$a<$b时,值为-1;当$a==$b时,值为0 
     (3)自动把操作数转化为整数,不能转化为整数则为0 
     (4)浮点数不精确,不要把值相近的数比较,否则得到的结果是出乎意料的
    
3)、字符串比较运算符 
      lt(小于,l为小写的L)、gt(大于)、eq(等于)、le(小于等于)、ge(大于等于)、ne(等于)、cmp(比较)
      
     (1)字符串的比较原则:按照字母表的顺序比较,数字<大写字母<小写字母(a小—z大)
     (2)字符串比较的次序:字符串从左到右比较。'azz'<‘bc'(即:首先a与b进行比较,然后z与c进行比较)
     (3)当一个串是另一个的前缀时,长度长的为大。例如:dog
     (4)字符串可以从右向左进位,且是字母数字分别进行 
     (5)自动把操作数转化为字符串。123 lt 45 => '123' lt '45' 
     (6)cmp等同于<=>,结果为-1,0, 1 
            例如:$str1=”a”,$str2=”a“,则print ($str1 cmp $str2) ==> 0
            例如:$str1=”a”,$str2=”b”,则print($str1 cmp $str2)===> -1
            例如:$str1=”b”,$str2=”a”,则print($str1 cmp $str2)===> 1
     (7)空串,0,Undef,这三种情况都为假 
            例如:如下比较的结果
            35 != 30+5       #假
            35 == 35.0       #真
            '35' eq '35.0'    #假(当成字符串来比较)
            'fred'   lt   'barney'   #假
            'fred'   lt   'free'         #
            'fred'   eq "fred"      #真
            'fred'   eq   "Fred"   #假
            '    '   gt   ' '   #真

4)、字符串连接(.)、字符/字符串重复(x)
     (1)连接("."),例如:$a=‘a'.'b';  =>‘ab'
            在print时可以直接写print $a$b=>print $a.$b; 但是这两者的原理是不一样的
     (2)重复("x"),注意:前后有空格(目的:为了和变量名分开)
            例如:‘a'   x   5=‘aaaaa',若重复次数<1,则返回空串
            例如:"5" x 4,即为:"5555" 
            例如:"love" x (4+1),即为:"lovelovelovelovelove" 
            例如:"4.8" x 4,即为:"4.84.84.84.8" 
            例如:6.1 x 3,即为:"6.16.16.1" 
            即:左边是一个字符串,右边是该字符串出现的次数

5)、逻辑运算符(&&(and)(与)、||(or)(或)、!(not)(非)、xor(异或)
     (1)先算左边的值,后算右边的值
     (2)&&和and的优先级不同,但除非特殊情况,很难有区别

6)、位操作运算符 
      &(按位与)、 |(按位或)、 ~(按位非)、 ^(按位异或)、 <<(左移)、>>(右移)

     (1)操作数为二进制整数,如果是小数则截取为整数 
     (2)<<左移,移开后空位补0,值为原数值的2*N倍
           (例如:z<<4,则z=z*(2的4次方))
     (3)>>右移,首位补0,值为原值一半(并取整)
           (例如:z>>4,则z=z/(2的的次方))

7)、赋值运算符
      =、+=、-=、*=、/=、%=、**=、&=、|=、^=、.=

     (1)$a+=1=>$a=$a+1
     (2)可以连等$a=$b=3;=>$a=3;$b=3;
     (3)混用 ($a=$b)+=3;=>$a=$b;$a=$a+3;(不建议使用)

8)、自增(++)、自减(--)
     (1)不要在变量两边都使用此种操作符
            ++$var--
     (2)不要在变量自增/减后在同一表达式中再次使用
            $var2 = $var1 + ++$var1;
     (3)可用于字符串的自增,当z、Z、9时进位。
            $a=‘caz'; $a++; ==> $a=‘cba';
     (4)不能用于字符串的自减,当$a--时,按数字运算,字符先转化为0再自减
     (5)如果字符串含有非字母数字符号,或数字位于字母中时,自增也先化为0再自增
            例如:$a=‘ab*c'; $a++;   ==> $a=1;
            例如:$a=‘ab5c'; $a++;   ==> $a=1;
     (6)预增$b=++$a,$a先自增再赋值,后增$b=$a++;$a先赋值再自增;反之,同理
            例如:$a=1; $b=++$a; =>$a=2,$b=2;
            例如:$a=1; $b=$a++; =>$a=2,$b=1;
     (7)只能用于单一变量,不能对运算后的变量进行。
            例如:($a+$b)++

9)、逗号(相当于:将两条语句写在一行)
      适用范围: 只有当两个语句关联紧密时才使用
      例如:$a+=1,$b=$a;   => $a+=1; $b=$a;
      例如:$a="ab5c", print $a."\n";
      
10)、条件运算符
        条件? 真:假
      (1)三个操作数:先对条件表达式运算,为真时执行:的左边的运算,为假时执行:的右边的运算
              例如:$result = $var == 0 ? 14 : 7;
      (2)用于简单的条件
      (3)条件表达式用在=的左边
              例如:$condvar == 43 ? $var1 : $var2 = 14;
              例如:$condvar == 43 ? $var1 = 14 : $var2 = 14;

1-2  操作符优先级别( precedence--优先级)
        当一个表达式中出现几种不同的运算符,哪个先计算,哪个后计算
        例如:$condvar == 43 ? $var1 : $var2 = 14;(先算条件,后算赋值)
        例如:$x = $a == $b;(先算关系,后算赋值)
        例如:$x == 0 || $y / $x > 5;(先算除,接着算大于、接着算等于,最后算关系或)
        例如:$result = 11 * 2 + 6 ** 2 << 2;(先算幂,再算乘,接着算加,再接着算左移,最后算赋值)
       (1)一般的优先级如下:
         自增自减最高,单操作数高于多操作数,数字运算 > 比较运算(数字比较与字符串比较) > 位运算 > 赋值运算 > 逻辑运算 
    (2)数字运算:幂 > */>+- 
    (3)比较运算: <(小于)、>(大于)高于(== 与!=)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值