设为首页 收藏本站
查看: 821|回复: 0

[经验分享] Perl入门(一)Perl的基本类型及运算符

[复制链接]

尚未签到

发表于 2015-12-27 15:37:59 | 显示全部楼层 |阅读模式
  在学习Perl的基础之前,还是希望大家有空去看以下Perl的简介。百度百科
  一、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的程序员肯定是想钱想疯了);引用的方式也很简单:$变量名。
  下面给出一个简单的示例:

#!user/bin/env perl -w
$int = 123456;
$float = 123.456789;
$sci_notation1 = 1.2E10;
$sci_notation2 = 1.2e10;
$big_num = 1_789_854_654_894_654_355_223;
$string = "this is a string";
printf "int value :$int\n";
printf "float value :$float\n";
printf "sci_notation1 value :$sci_notation1\n";
printf "sci_notation2 value :$sci_notation2\n";
printf "big_num value :$big_num\n";
printf "string value :$string\n";
  输出结果如下

int value :123456
float value :123.456789
sci_notation1 value :12000000000
sci_notation2 value :12000000000
big_num value :1.78985465489465e+021
string value :this is a string
  简单解释一下:


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


  • 如果数据过长,会有精度上的舍入。
  • 字符类型的表示

    • 可以使用双引号&quot;&quot;,也可以使用单引号'',必须成对出现。
    • 当单引号内部内容包含单引号或双引号内部内容包含双引号时,可以采用反斜杠“\”进行转义。如:&quot;Tom said:\&quot;it is rainning outside!\&quot;&quot;.
    • Perl提供另外一种字符串表示方式qq代表双引号(not Tencent QQ),q代表单引号,配合界限符使用。界限符可以使任意非空&#26684;、tab、换行字符。例如:qq(Tom said :&quot;it is raining outside&quot;)。但是不推荐使用数字和字母作为界限符,会造成程序阅读困难.
    • 但是也会碰到第二点的问题,如果内部字符创包含界限符,1.成对出现的是允许的,但是会降低可读性。2.使用转义字符。3.界限符那么多,换一个。


  • 上述printf输出中有引用到之前定义的变量。这种方式仅在“”或pp内部可以使用,其他方式不可。
  三、Perl中运算符
  多数都和其他语言一样,如果你有一定的语言基础,可以只看红字部分
  赋&#20540;运算符


  • = 赋&#20540;
  • &#43;=  例如:$num &#43;= 1; 等价于$num =$num&#43;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.&quot; string&quot;;# . 代表连接符,将两个字符串拼接起来
  算术运算符


  • &#43;
  • -
  • *
  • /
  • % 取余数
  • ** 幂指数 10**2 即10的2次方
  • &#43;&#43;
  • --
  • .  连接字符串,&quot;this is a &quot;.&quot;string&quot; = &quot;this is a string&quot;
  数&#20540;关系运算符


  • >      大于
  • >=    大于等于
  • <      小于
  • <=    小于等于
  • ==    等于
  • !=     不等于
  • <=>  大于: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的&#20540;
  • -w $file 如果$file是可写入的话,返回1的&#20540;
  • -x $file 如果$file是可执行的话,返回1的&#20540;
  • -e $file 如果$file存在的话,返回1的&#20540;
  • -o $file 如果$file是被执行才所拥有的话,返回1的&#20540;
  • -s $file 返回$file的文件大小(bytes)
  • -f $file 如果$file是正常文件的话,返回1的&#20540;
  • -T $file 如果$file是文本文件的话,返回1的&#20540;
  • -B $file 如果$file是Binary文件的话,返回1的&#20540;
  • -M $file 返回$file文件最后一次更改时间到现在的日期数
  特别注意:

  1.Perl不刻意强调变量的初始化,如果一个变量没有初始化就进行运算,则会取其默认&#20540;:数字为0,字符串为&quot;&quot;空字符串。
  2.Perl中字符串可以和数&#20540;进行运算,如果字符串看上去不像个数字,则会用0代替
  3.千万注意数&#20540;型关系运算符和字符串型关系运算符的区别。数字比较时用数&#20540;关系运算符,字符串比较时用字符串关系运算符。
     如果在字符串比较时使用了数&#20540;关系运算符,如: $name=&quot;Jack&quot;;$name == &quot;Tom&quot;;运算的结果总会是1,原因参见 2。
  (到时候你从数据库里取出几千万的数据别怪我没说啊,等着被项目经理打死吧)
  4.移位操作中<<与操作系统位数有关,如64位操作系统中 1<<64 =1,每移动64位为一个循环。
  5.Perl中认为0,空字符串,未定义&#20540;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(&quot;asdf&quot;)=4;
chop:去除最后一个字符:chop(&quot;abcd&quot;)=&quot;abc&quot;;
chomp:去除尾部的回车换行:chomp(&quot;abcd\n&quot;)=&quot;abcd&quot;;
substr($string,m,n):给定字符串,从地m位开始截取n位长度:substr(&quot;Hello&quot;,2,3)=&quot;llo&quot;,计数从0开始,n可省略,即至尾部
&#65279;&#65279;


&#65279;&#65279;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-157058-1-1.html 上篇帖子: 黄聪:unix时间戳转换工具|unix时间戳在线计算|perl时间戳|php时间戳|mysql时间戳|python时间戳 下篇帖子: perl中foreach(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表