【perl】学习手记(一)--基本类型及运算符

2017-10-29 11:17:33来源:CSDN作者:baidu_39511645人点击

分享

Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。[1] Perl最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。现在的版本为Perl 6,于2015年12月25日更新。Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为“一种拥有各种语言功能的梦幻脚本语言”、“Unix 中的王牌工具”。Perl 一般被称为“实用报表提取语言”(Practical Extraction and Report Language),你也可能看到“perl”,所有的字母都是小写的。一般,“Perl”,有大写的 P,是指语言本身,而“perl”,小写的 p,是指程序运行的解释器。

一、Perl的基本类型

Per的基本类型分为两种:数值型和字符串型。

数值型可细分为

  • 整数型。如123。
  • 浮点型。如123.123、0.123456。
  • 科学计数型。如1.23E2、1.23e2。
  • 大数值类型。如1_156_123_585_123。

字符串型

  • 字符串。如“123456”,‘123’,qq(this is a string too!)

二、用变量存储基本类型值

Perl定义变量很简单。格式为:$变量名  (PS:Perl的程序员肯定是想钱想疯了);引用的方式也很简单:$变量名。

下面给出一个简单的示例:

[python] view plain copy
  1. #!user/bin/env perl -w  
  2. $int = 123456;  
  3. $float = 123.456789;  
  4. $sci_notation1 = 1.2E10;  
  5. $sci_notation2 = 1.2e10;  
  6. $big_num = 1_789_854_654_894_654_355_223;  
  7.   
  8. $string = "this is a string";  
  9.   
  10. printf "int value :$int/n";  
  11. printf "float value :$float/n";  
  12. printf "sci_notation1 value :$sci_notation1/n";  
  13. printf "sci_notation2 value :$sci_notation2/n";  
  14. printf "big_num value :$big_num/n";  
  15. printf "string value :$string/n";  

输出结果如下

[python] view plain copy
  1. int value :123456  
  2. float value :123.456789  
  3. sci_notation1 value :12000000000  
  4. sci_notation2 value :12000000000  
  5. big_num value :1.78985465489465e+021  
  6. string value :this is a string  

简单解释一下:

  • 科学技术型数值中E不区分大小写
  • 大数值类型采用“_”进行分隔仅是为了方便阅读,上面采用千分法,你也可以采用万分法,也可以直接不使用“_”
  • print和printf均为内置的输出函数。如果想要接收键盘输入数据可以采用后面的格式:$from_key_board = <STDIN>; 从DOS窗口接收输入,存储到$from_key_board中

注意:

  1. 如果数据过长,会有精度上的舍入。
  2. 字符类型的表示
    • 可以使用双引号"",也可以使用单引号'',必须成对出现。
    • 当单引号内部内容包含单引号或双引号内部内容包含双引号时,可以采用反斜杠“/”进行转义。如:"Tom said:/"it is rainning outside!/"".
    • Perl提供另外一种字符串表示方式qq代表双引号(not Tencent QQ),q代表单引号,配合界限符使用。界限符可以使任意非空格、tab、换行字符。例如:qq(Tom said :"it is raining outside")。但是不推荐使用数字和字母作为界限符,会造成程序阅读困难.
    • 但是也会碰到第二点的问题,如果内部字符创包含界限符,1.成对出现的是允许的,但是会降低可读性。2.使用转义字符。3.界限符那么多,换一个。
  3. 上述printf输出中有引用到之前定义的变量。这种方式仅在“”或pp内部可以使用,其他方式不可。

三、Perl中运算符

多数都和其他语言一样,如果你有一定的语言基础,可以只看红字部分

赋值运算符

  • = 赋值
  • +=  例如:$num += 1; 等价于$num =$num+1;
  • -=  例如:$num -= 1; 等价于$num =$num-1;
  • *=  例如:$num *= 1; 等价于$num =$num*1;
  • /=  例如:$num /= 1; 等价于$num =$num/1;
  • %=  例如:$num %= 1; 等价于$num =$num%1;         #取模,除以那个数取余数
  • **=  例如:$num **= 2; 等价于$num =$num**2;          #**代表幂,$num的2次方
  • .=    例如:$str.=“ string” 等价于 $str = $str." string";# . 代表连接符,将两个字符串拼接起来

算术运算符

  • +
  • -
  • *
  • /
  • % 取余数
  • ** 幂指数 10**2 即10的2次方
  • ++
  • --
  • .  连接字符串,"this is a "."string" = "this is a string"

数值关系运算符

  • >      大于
  • >=    大于等于
  • <      小于
  • <=    小于等于
  • ==    等于
  • !=     不等于
  • <=>  大于:1;等于:0;小于:-1;

字符串关系运算符

  • gt      大于
  • ge     大于等于
  • lt       小于
  • le      小于等于
  • eq     等于
  • ne     不等于
  • cmp  大于:1;等于:0;小于:-1;

逻辑运算符

  • &&或and   与      全真则真
  • || 或or        或      全假则假
  • !或not     非       真假假真
  • xor            异或   同假异真

位运算

  • &       按位与
  • |        按位或
  • ~       按位非
  • ^        按位异或
  • <<     左移位
  • >>     右移位

特殊运算符

  • ..         区间表示  如 1..3 等价于 1,2,3
  • ?:    三目操作符,满足?前条件执行:前内容,不满足执行:后内容

文件数据运算符

  • -r $file 如果$file是可读取的话,返回1的值
  • -w $file 如果$file是可写入的话,返回1的值
  • -x $file 如果$file是可执行的话,返回1的值
  • -e $file 如果$file存在的话,返回1的值
  • -o $file 如果$file是被执行才所拥有的话,返回1的值
  • -s $file 返回$file的文件大小(bytes)
  • -f $file 如果$file是正常文件的话,返回1的值
  • -T $file 如果$file是文本文件的话,返回1的值
  • -B $file 如果$file是Binary文件的话,返回1的值
  • -M $file 返回$file文件最后一次更改时间到现在的日期数

特别注意:

1.Perl不刻意强调变量的初始化,如果一个变量没有初始化就进行运算,则会取其默认值:数字为0,字符串为""空字符串。

2.Perl中字符串可以和数值进行运算,如果字符串看上去不像个数字,则会用0代替

3.千万注意数值型关系运算符和字符串型关系运算符的区别。数字比较时用数值关系运算符,字符串比较时用字符串关系运算符。

   如果在字符串比较时使用了数值关系运算符,如: $name="Jack";$name == "Tom";运算的结果总会是1,原因参见 2。

(到时候你从数据库里取出几千万的数据别怪我没说啊,等着被项目经理打死吧)

4.移位操作中<<与操作系统位数有关,如64位操作系统中 1<<64 =1,每移动64位为一个循环。

5.Perl中认为0,空字符串,未定义值undef为false,其他均为true。

6.字符串关系运算中,对两边的字符串从左到右进行按位比较,比较依据Ascii码表顺序

7.&& 和and并不完全相同,&&要早于and执行

8.逻辑运算符并不是返回0或1,而是返回判断结束前处理条件的结果。如 1&&2 返回2 ,0&&2返回0,1||2返回1。

Perl常用函数

printf:输出函数,用法同c语言中一样;

length:输出包含内容的长度:如length("asdf")=4;

chop:去除最后一个字符:chop("abcd")="abc";

chomp:去除尾部的回车换行:chomp("abcd/n")="abcd";

substr($string,m,n):给定字符串,从地m位开始截取n位长度:substr("Hello",2,3)="llo",计数从0开始,n可省略,即至尾部

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台