zoukankan      html  css  js  c++  java
  • Perl 学习笔记-标量数据

    最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考.

    笔记来自<<Perl语言入门第5版>>

    1. 在Perl内部,不区分整数值和浮点数值,所有数字的内部格式都相同,采用"双精度浮点数"运算,自动转换.范围值(1e-100到 1e100)

    2. 可以在一个很大的数中间插入下划线,便于阅读: 61_298_040_283_768,在取模运算时,如果其中一边或两边都是负数,则不同的Perl版本可能会有不同结果.不能计算负数的负数次方,因为会得到复数,用复数可以用Math::Complex模块.

    3. 字符串:

      1) 最长字符串没有长度限制,遵循"无内置限制"(no built-in limits)的原则

      2) 空字符(NULL)在Perl中没有特殊的意义,Perl会用其他方式记住字符串的长度.而不是用空字符来表示字符串的结尾.

      3) 可以将一个图形文件或编译过的可执行文件读到一个Perl字符串变量中,修改内容后再写回去.

      4) 字符串直接量两种形式:

        单引号内的字符串: 除了单引号和反斜线符,单引号内的所有字符都代表它们自己,包括换行符(注意: 在单引号内不代表换行,而时反斜线和n两个字符.同时,只有在后面是另一个反斜线或者单引号时,前面的反斜线才有转义的含义)

        双引号内的字符串: 其中的反斜线可以用来表示控制字符,或是用八进制或十六进制写法来表示任何字符.用 表示换行符.支持变量内插(variable interpolated).

         5) 字符串操作: 用 . 号连接;用小写字符 x 来计算重复,如: "roger" x 3,表示3个roger字符串相连,如果左边操作数是数字,则会先将其转换为字符串,右边操作数如果时小数,会先将其取整.

    4.   声明警告信息

    1 perl -w my_program #方法1
    2 
    3 #! usr/bin/perl -w #方法2
    4 
    5 #! usr/bin/perl
    6 use warnings  #方法3
    7 
    8 #! usr/bin/perl
    9 use diagnostics  #方法4

    5.   运算符.

      数值运算使用符号 == != < > <= >= 等等

      字符串中同样的运算采用 eq ne lt gt le ge等等

      undef == 0 返回1,undef eq '' 返回1,undef 既不是字符串,也不是数值,相当于null,当成数值使用时会被当成0,当成字符串使用时会被当成空字符串.Perl程序员常常根据需要,把新变量当成0或空字符串来使用.复制一个undef 变量到另一个变量美柚问题,但是用print 输出就会引发警告.

    6. 控制结构

      1> 可选的程序块周围一定要加上花括号表示界限(在C语言中不一定)

      2> Perl 中没有专门的布尔数据类型,它是靠一些简单规则的判断的.

        a) 如果值为数字,则0为假,其他为真

        b) 如果值为字符串,空串为假,其他为真

        c) 非数值或字符串,会先转换成数字或字符串再判断

        d)特例:字符串 '0' 和数字0在Perl中指同一个标量,所以,'0' 是唯一一个被当成假的非空字符串.

        e) 可以使用 ! 来取反

    7.   获取用户输入

    1 #! usr/bin/env perl
    2 $line = <STDIN>; #行输入操作符
    3 if($line eq "
    "){ #'
    'is wrong!
    4     print "This is a blank line!
    "; 
    5 }else{
    6     print "The input is :${line}
    ";
    7 }

    用户输入字符串之后再输入换行符' ',输入信息就保存在字符串$line中,但是' '也成了字符串的一部分,它并不会像C语言一样会将' '转换成''.很多时候想去掉结尾的' '符,可以用chomp()处理.

    1 #! usr/bin/env perl
    2 $line = <STDIN>;
    3 chomp($line);  #去掉换行符'
    '
    4 #也可以 chomp($line = <STDIN>);
    5 if($line eq "a"){ #如果没有去掉,那么就是: ($line eq "a
    ")为真
    6     print "yes
    ";
    7 }else{
    8     print "$line";
    9 }

    chomp的括号也可以去掉,遵循Perl的惯例,除非去掉括号会改变表达式的意义,否则括号用不用都可以.chomp函数返回的是去掉的字符数 ,如果字符串后面有多个换行符,chomp()只会去掉最后一个.

  • 相关阅读:
    第十二周工作总结
    第八周工作总结
    冲刺2
    冲刺1
    用户场景分析
    用户场景分析
    水王在哪
    课堂练习-4个数的和
    《大道至简》第一章读后感
    ELF Format 笔记(三)—— Section Types
  • 原文地址:https://www.cnblogs.com/roger9567/p/4507485.html
Copyright © 2011-2022 走看看