perl
Java 程序源
微信公众号: Java 程序源,敬请关注!
展开
-
01. Perl 简介
Perl 是Practical Extraction and Report Language 的缩写,可翻译为 “实用报表提取语言”。Perl 是一门语法很灵活, 执行效率很高的语言, 有巨大的第三方代码库CPAN支持, 因此可以做到很多事情. 但是,笔者通常把Perl 当作一种高级的脚本语言, 用来开发一些常用的linux 工具, 编写一些日常服务器维护的脚本. Perl 特别删除对文本的处理....原创 2019-08-27 16:05:55 · 8077 阅读 · 0 评论 -
19. Perl 标准输入输出重定向
Perl 对文件的读写是通过文件句柄来实现的,标准输入输出的文件句柄分别为STDIN和STDOUT, 重定向输入输出只需要修改标准输入与标准输出的文件句柄指向即可.1.输出重定向perl 默认输出为终端显示器, 文件句柄为STDOUT, 因此只需要修改STDOUT 指向的文件即可重定向输出1.1 定向输出到具体文件# 以追加地方式重新打开标准输出文件句柄, 使标准输出重定向到文件hello...原创 2019-08-27 16:03:35 · 8296 阅读 · 0 评论 -
20. Perl 标准输出-终端高亮显示关键字
通常脚本都是运行在Linux 终端的, 脚本输出也都是无格式的纯文本信息, 对于perl 的标准输出也是如此。 但是, 有时我们会想突出一下输出内容,希望能高亮显示一些文本内容, 或对部分文本加粗。Perl 对此提供了很号的支持. Perl 内置了ANSIColor 模块儿, 可以对终端输出的文本进行高亮显示, 但是仅限于linux 终端.1. Perl 语言支持颜色输出颜色输出可以用于pr...原创 2019-08-27 16:03:31 · 7921 阅读 · 0 评论 -
21. Perl 文件操作-文件读写
笔者说过, Perl 语言是非常删除处理文本的, 同样,perl 语言对文件的读写方式也非常简单。1 文件句柄perl 程序通过文件句柄对文件进行文件读写文件句柄相当于一个指针, 指向这个文件;定义文件句柄有两种方式: 一种是会名称全部时大写, 另一种时是定位为标量, 笔者建议句柄使用标量, 因为perl默认的文件句柄为全部大写.perl 内置句柄有: STDIN, STDOUT, S...原创 2019-08-27 16:03:27 · 9525 阅读 · 0 评论 -
22. Perl 文件操作-文件夹遍历
虽然Perl 语言对目录的常见操作也提供了一组API, 如rename, rmdir, unlink 等函, 但是笔者认为并没有太大必要去花时间掌握这些函数, 因为perl 通过system 函数可以直接执行系统命令, 所以直接使用system+原生linux文件操作命令即可, 这样可以少学一套API. 因此, 笔者更常用于此种方式.1. 获取目录下文件列表Perl 语言获取文件列表是通过砖石...原创 2019-08-27 16:03:23 · 943 阅读 · 0 评论 -
23. Perl 文件操作-文件类型判断
perl 语言提供了很多对于判断文件属性的操作符, 笔者只列出个人常用的一些文件操作符. 文件属性判断操作符通常与if 配合使用.1. 常用文件操作符1.1 判断文件权限测试操作符含义-r当前用户对此文件是否拥有可读权限-w当前用户对此文件是否拥有可写权限-x当前用户对此文件是否拥有可执行权限-o此文件所有者是否是当前用户1.2 判断文件类...原创 2019-08-27 16:03:19 · 8089 阅读 · 0 评论 -
24. Perl 进程管理-调用系统命令或外部脚本
Linux 系统中, 每执行一条命令或运行一个程序,都会产生一个主进程, 在主进程运行的时候,也有可能会产生多个子进程, 我们可以通过命令: ps -ef | grep xxx 来查看进程相关的信息.但是对于有些命令, 执行速度很快, 比如说ls /, 这样我们通过ps -ef 并不能看到与ls 相关的进程信息, 虽然看不到, 但是这不能表示ls 在执行的时候不会产生进程, 只是因为执行速度太快...原创 2019-08-27 16:03:15 · 7859 阅读 · 0 评论 -
25. Perl 进程管理-进程间信号交互
Perl 程序在运行时, 会启动一个进程, 可以接收其它进程发送的信号. 通常需要监听的信号是终止程序信号, 在接收到终止信号时, 可以对程序做一些资源清理工作.1. 接收其它进程发送的信号perl 内置了%SIG 存储了perl 可接收的所有信号参数, 存储格式为: key=method我们只需要给对应的key对应的value设置相应的方法即可,这样当程序接收到信号,就会执行对应的方法....原创 2019-08-27 16:03:12 · 7643 阅读 · 0 评论 -
26. Perl 自定义模块儿
为了提升代码的重用性,perl 语言有一个模块儿的概念,类似于java中的jar包。 这样的话,我们就可以构建自己的函数库, 从而实现代码的重用.1. 自定义模块儿1.1 模块儿开发自定义模块儿名称以后缀名pm 结尾, 如: xx.pm模块儿必须以package 开始, 以1; 结束# 定义模块儿名称package $module_name;# 自定义模块儿方法, 可以是多个...原创 2019-08-27 16:03:07 · 7934 阅读 · 1 评论 -
27. Perl 脚本实战-psgrep
psgrep 命令用于通过关键字筛选系统当前正则运行的进程, 基于linux命令ps 和grep, 主要特性:支持批量查询, 可同时查看多个关键字, 多个关键字之间是或的关系查询列表中每行为一个独立的进程,不自动换行查询列表中自带索引号查询列表中关键字高亮显示1. 用法示例1.1 单个关键字查询$ psgrep redis[1] zongf 31685 1311 0 ...原创 2019-08-27 16:03:03 · 7695 阅读 · 0 评论 -
28. Perl 脚本实战-pskill
pskill 用于通过关键字杀死当前系统正则运行的进程, 基于linux命令 ps, grep , kill 实现. 主要特性:支持通过关键字筛选进程列表, 进程列表自带序号筛选时支持使用多个关键字, 多个关键字直之间时或的关系支持通过列表序号杀死进程, 而非进程id,使用更方便支持批量杀死多个进程支持快速杀死全部进程.1. 用法示例pskill 会查询出所有包含关键字的进程,...原创 2019-08-27 16:02:59 · 7419 阅读 · 0 评论 -
29. Perl 脚本实战-confview
confview 命令用于查看配置文件中有效配置信息,以#开头的行或空行会被认为是有效信息. 主要特性:自动过滤空行和注释支持高亮显示关键字有效信息保留原行号1. 用法示例1.1 查看配置文件有效配置信息$ confview redis.conf.7481 [2 ] include /usr/local/etc/redis/redis.conf[7 ] bind 127.0.0...原创 2019-08-27 16:02:55 · 7637 阅读 · 0 评论 -
30. Perl 脚本实战-confgrep
confgrep 命令类似于confview, confgrep 主要用于筛选配置文件中携带关键字的行的信息。 主要特性:默认自动过滤空行和注释只保留包含关键字的行有效信息保留原行号显示配置文件总行数, 符合条件的行数1. 用法示例1.1 查询有效配置行中包含关键字的行$ confgrep redis.conf.7481 memory port[13] port 7481[4...原创 2019-08-27 16:02:50 · 7651 阅读 · 0 评论 -
31. Perl 脚本实战-psnetstat
psgrep 命令用于查询端口被那个进程占用, 主要特性:支持通过端口号快速查询占用当前端口的进程支持一次性查询多个端口号的占用进程查询列表会展示netstat 命令 与ps 命令的综合信息需要sudo 权限或root 用户执行1. 用法示例1.1 查询单个进程$ psnetstat 7481[1] tcp 0 0 127.0.0.1:7481 ...原创 2019-08-27 16:02:10 · 2056 阅读 · 0 评论 -
32. Perl 脚本实战-rssh
rssh 用于向远程服务器发送一条linux 命令,并捕获命令结果. 免交互.1. 用法示例当系统环境变量中有expect 时, 可以直接执行rssh 命令, 如果采用源码安装的expect,且expect没有添加到环境变量中,那么可指定expect所在路径1.1 使用系统默认expect 环境$ ./rssh 127.0.0.1 zongf 123456 'ls /home/zongf'...原创 2019-08-27 16:01:55 · 2205 阅读 · 0 评论 -
33. Perl 脚本实战-rscpdown
rscpdown 用于免交互从远程服务器上下载文件, 不能下载多个文件。 命令使用说明:命令依赖expect 环境命令携带用户名和密码, 无须交互文件名支持通配符方式批量下载多个文件命令只能下载文件, 不能下载目录命令最多只能包含5个参数, 不支持多个目标文件参数1. 用法示例1.1 查询单个进程$ rscpdown 127.0.0.1 zongf gaofeng . /etc...原创 2019-08-27 16:02:05 · 2076 阅读 · 0 评论 -
18. Perl 标准输入输出
默认情况下, Perl 程序标准输入为键盘输入, 标准输出为终端显示器.1. 标准输入使用 可以获取用户从键盘输入的一行信息, Enter 键结束输入, 输入结果包含换行符通常会使用chomp函数去掉行尾的换行符, 使用标量接收键盘输入, 然后再做后续处理#常见用法print "please input :";chomp($line=<STDIN>);print "y...原创 2019-08-27 16:03:40 · 7989 阅读 · 0 评论 -
17. Perl 正则表达式-正则分隔字符串
在使用Perl 处理文本时, 对字符串采用正则分隔是最常见的一个操作了.1. 正则分隔字符串语法: 数组或列表 = split 分隔模式,字符串;1.1 按任意多个空格进行分隔按空格将字符串分隔为数组, 分隔后的数组长度为3.$book = "java linux unix ";@books = split /\s+/, $book;1.2 按单一字符分隔按字符点将字符串分...原创 2019-08-27 16:03:44 · 7873 阅读 · 0 评论 -
02. Perl 脚本开发入门
通常情况下, linux 系统已默认安装了perl 环境, windows 系统没有集成perl 环境. 笔者并不建议在windows下开发perl 脚本, 还是推荐在linux 系统下开发perl 脚本. 笔者操作系统为linux mint 19.1, 默认perl 版本为5.26.1. 检测perl 环境1.1 查看perl 版本笔者操作系统为 Linux mint 19.1, 默认安装...原创 2019-08-27 16:01:51 · 7965 阅读 · 0 评论 -
03. Perl 数据类型-简介
Perl 是一种弱类型语言, 有三种变量类型的数据类型: 标量, 数组, 哈希. 还有一种就是直接量, 直接量包含: 整型, 浮点型, 字符串. 对于写脚本程序而言, 掌握这些类型已经完全够用了.1. 直接量直接量(literal) 是指某个具体数值或字符串在Perl 源代码中的写法, 是不可变的.1.1 数字直接量Perl 语言不区分整数和浮点数.内部均以双精度(浮点数)形式进行保存和...原创 2019-08-27 16:05:49 · 7723 阅读 · 0 评论 -
04. Perl 数据类型-直接量
直接量(literal) 是指某个具体数值或字符串在Perl 源代码中的写法, 是不可变的, 所看即所得, 区别于变量. 最初看到直接量这个词有点儿陌生,其实java 一直也有,只是perl语言进行了单独的强调而已。1. 数字直接量数字分为整数和浮点数, 但是在Perl 内部对数字都是按双精度(即浮点数)进行保存和运算的, 也就是说对Perl 本身而言并不存在整型常量.1.1 整型直接量表示...原创 2019-08-27 16:05:45 · 7801 阅读 · 0 评论 -
05. Perl 数据类型-标量变量
Perl 语言是一种弱类型的脚本语言,对于变量并不区分数字和字符串。对于字符串和数字的变量统一使用标量(variable)来表示. 相较于数组变量和哈希变量,标量变量仅存储一个值,可以理解为单数变量.1. 标量perl 语言中无须对标量进行特殊的声明与定义,直接赋值即可.标量的赋值和引用方式完全一致, 没有任何差别.1. 标量的定义与赋值perl 语言中标量可以直接使用,无须提取赋值...原创 2019-08-27 16:05:42 · 7816 阅读 · 0 评论 -
06. Perl 数据类型-数组基本用法
Perl 语言中提供了数组变量, 用于标识一组元素的集合. Perl 的数组功能是非常强大的, 不仅可以作为数组,还可以做为栈或队列使用。1. 数组特性perl 数组元素类型可以是字符串, 也可以是数字perl 数组可以当做栈使用perl 数组可以当做队列使用perl 数组支持反向索引perl 数组可以不定义直接使用, 在使用的同时自动创建2. 数组基本操作2.1 创建数组...原创 2019-08-27 16:05:37 · 8087 阅读 · 0 评论 -
07. Perl 数据类型-数组常用API
Perl 语言强大的数组的特性,离不开强大而便捷的API支持。Perl 数组提供了很多强大而便捷的API.1. 常用API方法描述示例push从数组尾部压入一个或多个元素, 返回新数组元素个数$length=push(@books, ‘es’); $length= push(@books, @ints);pop从数组尾部弹出(删除)一个元素, 返回删除的元素...原创 2019-08-27 16:05:32 · 7659 阅读 · 0 评论 -
08. Perl 数据类型-哈希基本用法
哈希是使Perl 语言称为杰出编程语言的关键特色.哈希类似于Java 中的map 类型, 存储的是 key-value 键值对. perl 的哈希是非常高效的, 当hash 的元素有很多时, 查询也是相当快的.1. 哈希特性哈希结构存储的是一组 key-value 对的集合. 其中key 为字符串, value 为直接量, 可以通过key 来获取value 的值. 哈希和数组比较相似, 只不过...原创 2019-08-27 16:05:28 · 7904 阅读 · 0 评论 -
09. Perl 数据类型-哈希常用API
Perl 语言提供的哈希的API 并不太多, 但是也很强大了。但是哈希可以转换为value数组进行操作, 数组的API 是非常强大的。 Perl 语言还内置了环境变量的哈希变量, 用户在脚本中获取环境变量的相关信息1. 常用API单独使用keys 和 vlaues 返回的数组是无序的, 因此返回的元素并不一定是一一对应的. 当使用完keys 之后马上使用values , 那么此时相同索引的k...原创 2019-08-27 16:05:24 · 7686 阅读 · 0 评论 -
10. Perl 运算符
perl 常用的运算符有算术运算符, 比较运算符, 逻辑运算符. 这些运算符通常都是对标量使用的.1. 算术运算符perl 语言支持算术运算符有: 加, 减, 乘, 除, 求余, 乘幂.运算符描述示例结果+加$a = 1 + 2;a=3-减$a = 1 - 2;a=-1*乘$a = 1 * 2;a=2/除$a = 1 / 2;...原创 2019-08-27 16:05:06 · 7707 阅读 · 0 评论 -
11. Perl 控制结构-判断
相对于其它脚本语言,perl 语言的判断语法还是很丰富的。除了支持常见的if-else 语法结构之外,还支持unless-else 语法结构. 而且对于单行语句,还有简写模式.1. if 判断perl 的判断结构有if 和 unless, 这两种结构都是单匹配结构, 没有类似switch case 这种结构, 需要使用if-elsif-elsif-else 来模拟. 其实unless 等价于 ...原创 2019-08-27 16:05:00 · 7980 阅读 · 0 评论 -
12. Perl 控制结构-循环
perl 的循环结构有, for, foreach, while, until 四种, 其中for 和 foreach 底层结构一样, 它俩是等价的. while 和 until 是相反的逻辑,类似于if 和 unless 的关系. 控制循环语句有last, next, redo三种方式, 其中redo 是一个很新鲜的关键字, 这是java语言所不支持的.1. 循环结构1.1 for 循环...原创 2019-08-27 16:04:54 · 7710 阅读 · 0 评论 -
13. Perl 自定义函数(子程序)
perl 语言支持自定义函数, 通过自定义函数, 我们可以重复利用已有代码, 提供工作效率, 简短代码行数.我们可以封装一些常用的方法存储起来, 以后需要用到的时候,直接拿来用就行了, 不用再重复开发了.1. perl 函数特点函数定义使用关键字 sub + 函数名函数调用使用关键字 & + 函数名函数参数为一个无限制长度的列表直接量函数都有一个返回值, 为一个无限制的列表直接...原创 2019-08-27 16:04:50 · 8148 阅读 · 0 评论 -
14. Perl 正则表达式-正则匹配
正则表达式(regular expression) 在Perl 里面通常也叫模式(Pattern). 正则表达式是用来匹配或不匹配某个字符串是否符合特定字符串模板的,也可以实现字符串的替换.1. 正则匹配语法Perl 的正则表达式语法非常灵活, 可以借助于内置变量$_ 进行简化, 也可以借助于m符号来自定义匹配定界符.1.1 简写方式简写模式使用内置变量$_与模式进行匹配.标准模式无须...原创 2019-08-27 16:04:41 · 9306 阅读 · 0 评论 -
15. Perl 正则表达式-正则捕获
正则表达式在匹配过程中,可以通过小括号()对匹配内容进行捕获或分组.1. 捕获变量1.1 引用捕获变量对于捕获变量的引用分为两种方式, 在匹配模式中, 和匹配模式外.引用方式含义\n匹配模式中获取捕获的值, 如 m/(a|b)-\1/, 匹配a-a 或b-b$n在匹配模式外获取捕获值, 如 s/(a|b)/\U$1/, 将a或b变大写1.2 捕获变量的存...原创 2019-08-27 16:04:46 · 9434 阅读 · 0 评论 -
16. Perl 正则表达式-正则替换
正则表达式除了判断字符串是否匹配某个模式之外,也可以将匹配到的字符串进行替换.1. 正则替换语法默认正则表达式只替换一次默认正则表达式返回替换的次数1.1 简写语法简写方式就是对于内置变量$_ 进行正则替换操作简写方式常用语数组遍历中简写方式无须借助于绑定操作符 =~# 设置内置变量的值$_ = "hi,perl";# 对内置变量$_ 进行替换s/hi/hello/...原创 2019-08-27 16:03:49 · 9370 阅读 · 0 评论 -
34. Perl 脚本实战-rscpup
rscpdown 用于免交互从远程服务器上下载文件, 不能下载多个文件。 命令使用说明:命令依赖expect 环境命令携带用户名和密码, 无须交互文件名支持通配符方式批量下载多个文件命令只能下载文件, 不能下载目录命令最多只能包含5个参数, 不支持多个目标文件参数1. 用法示例1.1 查询单个进程$ rscpdown 127.0.0.1 zongf 123456 . /etc/...原创 2019-08-27 16:02:00 · 2090 阅读 · 0 评论