Perl 常用的命令行参数

  • -i:将处理结果直接写入文件,可以通过 -i.bak 或 -i"/tmp/orig_*" 等形式,在修改之前进行备份
  • -e:启用 perl 的命令行模式,perl 默认是执行脚本文件,必备选项
  • -n:按行处理,以类似 grep 的方式逐行读取文件进行处理
  • -a:将读入的内容,以特定分割符(默认是空格)分解成多个字段,存入 perl 预定义的 @F 数组中
  • -F:与 -a 选项配合使用,用于自定义分割符

Perl 的数据类型:

  • 标量:整型、浮点型、字符串等,以 $VarName = “Aa” 形式定义
  • 数组:以 @VarName = (“Aa”, 56, “Cc”) 形式定义
  • 字典:以 %VarName = {"Aa"=>10, "Ba"=>20, "Cc"=>30} 形式定义

以上三种类型在调用时,也是使用各自的标识符,如:$VarName 调用了一个标量,@VarName 调用了一个数组,%VarName 则调用了一个字典。

如:

  • $VarName[2..-1] 是指取数组的第 3 至最后一个元素
  • $VarName = (@Var1, @Var2) 表示将两个现有数组的内容合并为一个新数组
  • $VarName{"Aa"} 指取字典中 Key 为 "Aa" 的值

相同数据类型之间,可以直接赋值,将数据内容进行复制;若将一个数组以 ‘=’ 赋值给了一个标量,则标量接收到的是数组的元素个数。

Perl 特有的转义字符

  • \u:表示将其后紧跟的第一个字符转换为大写
  • \U:表示将其后所有字符转换为大写,直到遇到 \E 或到达字符串开尾
  • \l:同 \u,转换为小写
  • \L:同 \U,转换为小写
  • \Q:将其后的所有非字母字符进行转义,即在前面添加转义字符:'\',如:\QI lo_ve cat 将被转换为 I\ lo\_ve \cat
  • \E:\U \L \Q 三者的作用域结束标志

Perl 正则变量

  • $N:包含上次模式匹配的第 N 个字符串,以圆括号为标识,如:$1、$2 等
  • $& 或 $MATCH:前一次成功匹配到的内容
  • $` 或 $PREMATCH:前一次匹配到的内容之前的内容
  • $' 或 $POSTMATCH:同上,表示之后的内容

Perl 的内置变量

  • %ENV :存储主机环境变量的字典
  • @ARGV :命令行参数列表
  • @F :用于存储 -a 选项分离出来的数组元素,即命令行的数组输入
  • STDIN :标准输入文件描述符(句柄)
  • STDOUT :标准输出
  • STDERR :标准错误
  • __FILE__ :perl 脚本所在文件名称
  • __LINE__ :perl 语句所在的行号
  • __PACKAGE__ :perl 语句所在的包名称
  • $! :此变量存储了错误信息
  • $_ 或 $ARG :默认输入和模式匹配内容
  • @_ :类似 $_
  • %_ :类似 $_
  • $. 或 $NR:匹配到的内容所在行号
  • $/ 或 $RS:输入记录的分割符,默认为行尾,即换行符
  • $\ 或 $ORS:输出记录的分割符
  • $, 或 $OFS:输出字段的分割符
  • $? :上一条外部命令的执行结果状态,0 表示成功
  • $PID、$UID、$EUID、$GID、$EGID :进程 ID 等
  • $0 :perl 脚本名称

数组操作函数

  • push:将指定数据项追加到数组末尾,如:push(@VarName, "Hello", "World")
  • pop:将数组最后一个元素弹出(即:删除),并返回这个被弹出的元素的值
  • shift:弹出数组的第一个元素,并返回它的值
  • unshift:将新元素添加到数组的开头,并返回新数组的元素个数
  • splice:数组部分内容替换,如:splice(@VarName, 5, 3, 4, 5, 6),指将数组的第六个元素开始的连续三个元素分别替换为 4 5 6
  • split:将字符串按指定的分割符切分成数组,如:split('-', "my-me-you"),将生成数组 ("my", "me", "you")
  • join:将数组整合成字符串,如:join('_', ("my", "me", "you")) 就生成了 "my_me_you"
  • sort:数组排序,返回排序后的值,如:@VarName = sort(@VarName) 这样操作可直接更改原始值

字典操作函数:

  • keys:返回字典所有 key 组成的数组,如:@Keys = keys %Map
  • values:返回字典所有 value 组成的数组,如:@Values = values %Map
  • exists:检测某个 key-value 是否存在,返回布尔值,如:exists(%Map{"NewYork"})
  • delete:从字典中删除元素,如:delete %Map{"London"}

Perl 模式

  • 严格模式:如果在 perl 脚本开头指明了 "use strict;",则所有变量之前都必须添加 my 修饰符,表示私有变量
  • 警告模式:如果在 perl 脚本开头指明了 "use warnings;",则运行时会有更多的提示

Perl 条件判断:

  • if 结构:if...elsif...else...
  • unless 结构:unless...elsif...else...
  • 三目运算:?::

Perl 循环:

  • while
  • until
  • for
  • foreach
  • do...while

Perl 循环控制语句:

  • next:跳过后续语句,进入下一次循环
  • last:结束循环,类似于 C 中的 break
  • redo:重新以最初状态开始循环
  • goto:类似 C 的跳转
  • continue:与 C 中的不同,用于指定每次循环都必须执行的语句,语法如:while {...} continue {...}

Perl 特有的运算符:

  • %:取余
  • **:幂运算,如:4**10 是指求 4 的 10 次方的值
  • <=>:比较两个数字,相等返回 0,前者大返回正数,前者小返回负数
  • lt、gt、le、...等:与 shell 中的 -lt、-gt 等类似,但不同的是 perl 用于比较字符串,而不是数字
  • cmp:比较两个字符串,相等返回 0,前者大返回正数,前者小返回负数
  • &、|、^、~、<<、>>:perl 支持位运算
  • and、or、not:逻辑运算符
  • q{}:等同于单引号
  • qq{}:等同于双引号
  • qx{}:等同于反号,用于执行外部 shell 命令
  • . :'点'表示连接两个或多个字符串
  • x N:表示将前面的字符或字符串重复 N 次
  • -> :类与方法的关系符号

Perl 时间函数

  • time():1970年1月1日至今的秒数
  • localtime():本地时间,格式化输出,类似于 date 命令
  • gmtime():格林豪治时间

Perl 函数:

  • sub FuncName {...}:定义方式,没有显式的参数列表
  • FuncName(...):调用时可以提供任意多个参数
  • perl 会将接收到的所有参数存储在内置的 @_ 数组中
  • 参数既有标量又有数组时,要把标量放在前面
  • 可以传递字典,在函数内部需要以 %VarName 的新字典数据类型接收,以还原字典结构
  • my 修饰的变量表示完全私有变量
  • local 修饰的变量表示在当前环境及内部调用的函数中有效

Perl 指针(引用)

  • \ :反斜线表示引用对象地址,如:$Var = \$VarName 表示 Var 是一个引用(指针),同理,@Var = \@VarName 与 %Var = \%VarName 意义类似;解引用时使用 $$VarName、%%VarName 等这种形式
  • [] :方括号可用于创建匿名数组,如:$VarAddr = [1, 2, 3],表示 VarAddr 这个标量中存储了一个匿名数组的地址
  • {} :同上,可以定义匿名字典,以标量存储其地址,取其值时,用对应的 $、@、% 标识符解引用,即可获得值

Perl 错误处理函数

  • die :显示错误信息,并退出进程,如:system("poweroff") or die "Can't poweroff $!"
  • warn:显示错误信息,但不退出进程

最新文章

  1. python基础之运算符
  2. python学习之day4,函数
  3. BZOJ1912 [Apio2010]patrol 巡逻
  4. C++primer 阅读点滴记录(一)
  5. URAL-1982 Electrification Plan 最小生成树
  6. Cocos开发中Visual Studio下HttpClient开发环境设置
  7. window.location.hash属性介绍
  8. solr + tomcat 搭建
  9. Http 辅助类
  10. 深刻理解一句js
  11. C/C++各种类型int、long、double、char表示范围(最大和最小)
  12. action解耦方式
  13. 【机器学习】TensorFlow学习(一)
  14. MongoDB 聚合分组取第一条记录的案例及实现
  15. python学习03
  16. Python中变量的命名
  17. Abp之工作单元与事务
  18. Redis常用命令与高级应用
  19. linux编程头文件所在路径的问题
  20. mysql系列六、mysql创建用户、授权、备份及恢复命令

热门文章

  1. Anaconda配置
  2. 汇编检测OD代码
  3. 拾遗:Git 常用操作回顾
  4. sip会话流程以及sip介绍(3)
  5. firewall防火墙配置
  6. JDK8新特性之Optional
  7. leetcode.字符串.409最长回文串-Java
  8. violet
  9. WebServer Project-02-XML解析
  10. vue-router 使用二级路由去实现子组件的显示和隐藏