perl基本知识点整理

来源:互联网 发布:unity3d 5.3.2f1 破解 编辑:程序博客网 时间:2024/05/16 01:01

perl的注意事项

数字 0, 字符串 '0'"" , 空 list () ,   和 undeffalse ,其他值均为 truetrue 前面使用 ! 或 not则返回 false
* 注释 * (hello.pl)

单行注释用 ‘#’

#我是被注释掉的

多行注释多数使用POD方式注释

=pod
要被注释的代码
=cut

**
以=pod开头,以=cut结尾
两者均要在行首
=cut后不能有其他字符
**

* 空白 * (hello.pl)

* 同一行内语句间的空白都会被视为一个进行处理* 空白和换行出现在字符串内,会照原样输出

* 输出 * (hello.pl)

* print 双引号和单引号,.可以连接字符串* 单引号输出    照原样输出* 双引号输出    会解析引号中的可以解析的相应语句* 支持printf();格式化输出

* 哈希&数组 * (hash.pl)

  • 数组的定义和访问
  • 数组的标量上下文返回数组大小
  • 数组可以直接全部输出
  • 允许下标为负数,负数时反向读取
    print “@arr”;
  • 数组的定义
    @arr = (1,2,3,4,5);
    print “$arr[0]”;

  • 哈希的定义和访问

    • 哈希定义
      %h = (‘name’=>ziv,’age’=>20);
    • 访问哈希
      print “$h{‘name’}”;
    • 读取哈希
      @arr = @h{name,age,sex};
    • 读取哈希的全部键值
      @str = keys %h;
    • 判断哈希是否存在
      exists($hh{‘name’});
    • 获取哈希大小 先通过获取所有的哈希键值的数组,数组大小即为哈希大小
      @str = keys %h;
      $size = @str;
    • 添加删除哈希
      $h{‘new’}=’new’;
      delete $h{‘name’};

数组操作函数

 + push(@arr,"str","",); #将列表的值添加到数组的最后 + pop(@arr);  #弹出最后数组的最后一个元素 + shift(@arr);  #弹出数组的第一个元素并将下标依次减小一 + unshift(@arr,"str","",);  #将指定字符串添加到数组最前面 + 切割数组 @arr1 = @arr[1..4]; + 替换数组 splice(@arr,begin,length,"",""); + 数组排序 sort(); #默认以ascii码排序 + 合并数组 @str = (@str1,@str2);;

* 预定义的特殊字符 *

FILE,LINE,PACKAGE
直接输出,”“内无法解析

* 字符串*

  • 字符串连接用.连接 $arr = hello.world;
  • 字符串和数字也可以用.连接
  • 标量之间也可以连接
  • 将字符串转换为数组split(分隔符,字符串);
  • 将数组转化为字符串join(连接符,数组或列表);

* 条件语句 *

  • if(){条件为真时}
  • if..else
  • if..elsif..else
  • unless(){条件为假时}
  • unless..else
  • unless..elsif..else
  • switch

* 循环语句 * (loop.pl)

  • while(){条件为假时停止}
  • for(){}
  • foreach $name(list){}
  • until(){直到条件为真才停止}
  • do{先执行后判断}while()

    * 循环控制语句 *

    • next;#有continue{}块时进入continue,没有时相当于c中的continue
    • last 相当于c中的break;
    • continue{} 一般在循环天剑再次判断前执行
    • goto goto loop
    • redo; 直接跳到循环语句的第一句,redo之后的语句不再执行,再次判断前的continue也不执行。

* 运算符 * (operate.pl)

  • 算数运算符 新增** 乘幂运算
  • 逻辑运算符 新增 <=> 左边小返回-1,右边小返回1,相等返回0
  • 字符串比较符

    • lt 左边是否小于右边
    • gt 左边是否大于右边
    • le 左边是否小于等于右边
    • ge 左边是否大于等于右边
    • eq 左边是否等于右边
    • ne 左边是否不等于右边
    • cmp 左边大于右边 1,左边等于右边 0,左边小于右边 -1.
  • 逻辑运算符

    • and (相当于java中的&&),同时也支持&&
    • or (相当于java中的||),同时也支持||
    • not (相当于java中的!),同时也支持!
  • 引号运算

    • q 单引号
    • qq 双引号
    • qx 反单引号
  • 赋值运算符
    +=、-=、=、/=、%=、=、*=

  • 位运算符(二进制运算)

    • & 且运算
    • | 或运算
    • ^ 亦或运算
    • ~ 补码运算
    • << 左移一位
  • 其他运算符

    • . 连接两个字符串
    • .. 范围运算符
    • x 重复运算符
    • ++,– 自增自减
    • -> 指定一类的方法

* 日期和时间 *

  • time() 返回从1970年1月1日起积累的秒数
  • localtime() 返回当地时间(直接调用获取系统设置的当前时区的时间)

    • sec 秒,0~61
    • min 分钟,0~59
    • hour 小时,0~24
    • mday 天,1~31
    • mon 月,0~11
    • year 年,从1990年开始
    • wday 星期几,0~6
    • yday 一年中的第几天,0~364、365
    • isdst 若夏令时有效则为真
  • gmtime() 返回格林威志时间,标准时间,0时区的时间

  • strftime(),可以格式化时间,需要use POSIX qw(strftime);调用模块posix中的函数
    perl
    $datestring = strftime "%Y-%m-%d %H:%M:%S",localtime;
    print "日期时间 $datestring\n";
    #当前东八区与GMT时间相差8小时
    $datestring1 = strftime "%Y-%m-%d %H:%M:%S",gmtime;
    print "GMT日期时间 $datestring1\n";

* 子程序 * (subroutine.pl)

  • 定义
    sub subroutine(){
    ….;
    }
  • 调用
    subroutine(参数列表);#参数可以是标量,数组,哈希,或数值
  • 注意
    • @_ 数组中存的是子程序调用时传入的所有参数,只读,不可直接修改
    • qw(); 用于分割字符串 @arr = qw(this is a example);#数组
    • scalar(); 可简单理解为获取数组的长度
    • 返回值,可以用return返回指定返回值,若不写,默认最后一行作为返回值,return后的语句将不会执
    • 私有变量,变量声明前加my关键词,可同时声明多个私有变量
    • 临时变量,local关键词,为全局变量提供临时的值,在退出作用域后变回原全局变量的值
    • 静态变量,state关键词,存在时间更久,使用时要有
      use feature ‘state’,声明数组和哈希时不能同时初始化

* 引用 * (quote.pl)

  • perl的引用是一个标量类型,引用就是指针,可以指向数组,哈希,子程序,等等
  • 创建时在被指向的数据类型前加”\“即可,$aref = \@arr;
    • 创建匿名数组 $aref = [‘ziv’,21,’man’];
    • 创建函数引用

      $aref = \&sub;
      &$aref(参数列表);
    • 创建循环引用(慎用),$foo = \$foo;
  • 取消引用,在引用前加上相应的符号即可
    • aref=\@arr;@aref;
    • 可用ref();判断引用指向的类型

* 格式化输出 * (format.pl)

  • 定义格式
    perl
    format _name =
    格式行,定义格式
    数据行,按照上一行的格式插入数据
    。。
    . #结束符
    write; #输出
  • 格式行
    • @或^开头,之后跟若干个<,>,|
    • < 表示左对齐,> 表示右对齐,| 表示中间对齐,他们的个数表示该字段的所占个数
    • 不知一个字段的格式之间用空格隔开
    • @###.## 用于输出固定格式的浮点数字,小数点前后的位数
  • 格式变量
    +\  (FORMAT_NAME) :格式名字,指定write调用的format的默认值,初始值为STDOUT
    • $% ($FORMAT_PAGE_NUMBER) :当前输出的页号
    • $= ($FORMAT_LINES_PER_PAGE) :每页中的行数
    • $| ($FORMAT_AUTOFLUSH) :是否自动刷新输出缓冲区存储
    • $^L ($FORMAT_FORMFEED) :在每一页(除了第一页)表头之前需要输出的字符串存储在
  • 输出到其他文件中
    write(file_name);
原创粉丝点击