提娜丶吧 关注:96贴子:31,635

回复:Perl语法的基本规则

取消只看楼主收藏回复

$a++; # 先返回10,再递增为11
++$a; # 先递增为12,再返回12
--$a; # 先递减为11,再返回11
$a--; # 先返回11,再递减为10


来自Android客户端76楼2018-09-12 23:59
回复
    # 以下4句为非独立的自增、自减表达式,自增自减符号的位置有影响
    $m = $a++; # 先返回10赋值给$m,然后$a再递增为11,所以执行结束后$m=10,$a=11
    $m = ++$a; # 先递增为12,再赋值给$m,所以执行结束后$m=12,$a=12
    $m = --$a; # 先递减为11,再赋值给$m,所以执行结束后$m=11,$a=11
    $m = $a--; # 先返回11赋值给$m,然后$a再递减为10,所以执行结束后$m=11,$a=10


    来自Android客户端77楼2018-09-13 00:23
    回复
      perl的比较操作符和bash完全相反。数值比较采用符号,字符串比较采用字母。


      来自Android客户端78楼2018-09-13 00:31
      回复
        数字 字符串 意义 -----------------------------
        == eq 相等
        != ne 不等
        < lt 小于


        来自Android客户端79楼2018-09-13 00:42
        回复
          > gt 大于
          <= le 小于或等于
          >= ge 大于或等于
          <=> cmp 返回值-1/0/1


          来自Android客户端80楼2018-09-13 00:50
          回复
            最后一个<=>和cmp用于比较两边的数值/字符串并返回状态码-1/0/1:
            小于则返回-1
            等于则返回0
            大于则返回1


            来自Android客户端81楼2018-09-13 23:52
            回复
              几个示例:
              35 != 30 + 5 # false
              35 == 35.0 # true


              来自Android客户端82楼2018-09-13 23:55
              回复
                '35' eq '35.0' # false(str compare)
                'fred' lt 'bay' # false
                'fred' lt 'free' # true


                来自Android客户端83楼2018-09-14 00:07
                回复
                  'red' eq 'red' # true
                  'red' eq 'Red' # false
                  ' ' gt '' # true


                  来自Android客户端84楼2018-09-14 00:15
                  回复
                    10<=>20 # -1
                    20<=>20 # 0
                    30<=>20 # 1


                    来自Android客户端85楼2018-09-14 00:16
                    回复
                      如果是数字,0表示假,其它所有数字都是真。
                      如果是字符串,空字符串('')为假,其它所有字符串为假。


                      来自Android客户端86楼2018-09-14 00:27
                      回复
                        如果是字符串'0',perl是当作数值0来处理的,所以这是唯一的非空但为假的字符串。


                        来自Android客户端87楼2018-09-14 00:31
                        回复
                          如果既不是数字,也不是字符串,那么先转换为数字或字符串再做判断。


                          来自Android客户端88楼2018-09-14 23:44
                          回复
                            perl有个技巧,将两个"!"一起用,相当于"负负得正",所以原来是真的仍然是真的,原来是假的仍然是假的。


                            来自Android客户端89楼2018-09-14 23:50
                            回复
                              但实际上,perl会将它们转换值"1"和"undef"。


                              来自Android客户端90楼2018-09-14 23:54
                              回复