perl脚本实战总结
# 获取环境变量的值
my $java_home = $ENV{"JAVA_HOME"};
字符串
截取字符串
# 截取字符串,从索引为3的位置(含)开始,截取长度为3
my sub_str1 = substr("abc123def", 3, 3);# 截取字符串,从索引为3的位置(含)开始,截取到最后
my sub_str1 = substr("abc123def", 3);
拆分字符串
# 将字符串以.来拆分
# 拆分之后返回一个数组
my @split_array = split(/\./, "abc.123.def");# 分别打印数组和对应的数组元素
print("split_array = @split_array \n");
print("split_array_0 = $split_array[0] \n");
print("split_array_1 = $split_array[1] \n");
print("split_array_2 = $split_array[2] \n");# 不带括弧拆分也是可以的,看个人习惯,但是个人感觉还是要带括弧更容易阅读,不易出错
my @split_array1 = split /\./, "abc.123.def";
使用split函数去拆分字符串时,语法如下:
split(reg, str)
也就是说,第一参数是匹配的正则表达式,第二个参数为需要拆分的字符串。关于正则表达式的使用大家可以自行百度。
需要注意的是,正则表达式需要放置在//中间,也就是两个/之间。比如,如果我们要以\拆分,那么就应该是:
# 特殊字符,比如\需要转义,我们的字符串中需要转义,正则中也需要转义
split(/\\/, "abc\\123\\def");# 正则中需要转义,字符串中不需要
# 第一个参数解读:通过\把/转义,组合起来就是\/,然后放入到perl的正则匹配字符//之中,
# 最后就是/\//
split(/\//, "abc/123/def");
比较运算符
数字比较:
== | 数字相等 |
!= | 不相等 |
> | 左边数字大于右边数字 |
< | 小于右边 |
>= | 大于等于右边 |
<= | 小于等于右边 |
<=> | 如果左边的数小于右边的数返回 -1,如果相等返回 0, 如果左边的数大于右边的数返回 1 。 |
字符串比较:
lt | 小于 | less than |
gt | 大于 | greater than |
le | 小于等于 | less than or equal to |
ge | 大于等于 | greater than or equal to |
eq | 等于 | equal to |
ne | 不等于 | not equal to |
cmp | 如果左边的字符串大于右边的字符串返回 1,如果相等返回 0,如果左边的字符串小于右边的字符串返回 -1。 | compare |
逻辑运算符:
and | 逻辑与运算符符。如果两个操作数都为 true,则条件为 true。 |
&& | 同上 |
or | 逻辑或运算符。如果两个操作数中有任意一个非零,则条件为 true。 |
|| | 同上 |
not | 起否定作用,类似于Java中的!,如果条件为true,则在前面加上 not 则为false |
perl正则表达式,主要有三种模式:
- 匹配:m//(还可以简写为//,略去m)
- 替换:s///
- 转化:tr///
关于Perl的正则表达式,可以参考菜鸟教程:
Perl正则表达式
my $str = "abc";
# 转大写
my $str1 = uc($str);
# 首字母转大写
my $str2 = ucfirst($str);# 转大写
my $string = 'welcome to runoob site.';
$string =~ tr /a-z/A-Z/;
print "\$string = $string\n";# 转小写
my $string = 'welcome to runoob site.';
$string =~ tr /A-Z/a-z/;
print "\$string = $string\n";# 转小写
my $str5 = "Welcome To Shanghai";
$str5 = lc($str5);
print("\$str5 = $str5\n");# 首字母转小写
my $str6 = "WELCOME TO SHANGHAI";
$str6 = lcfirst($str6);
print("\$str6 = $str6\n");
# 获取操作系统名称
my $os = $^0;
$os = lc($os);
print("os = $os\n");
# os可能的取值是aix、linux、mswin32,其余的未知
# .= 拼接字符串
my $str = "abc";
my $str1 = "123";
my $str2 = $str .= $str1;
print("str2 = $str2 \n");
文件测试操作符
-d | 为目录 |
-e | 文件或目录名存在 |
-f | 为普通文件 |
-p | 文件是命名管道(FIFO) |
-s | 文件或目录存在且不为0(返回字节数) |
-z | 文件存在,大小为0(目录恒为false),即是否为空文件 |
文件操作
# 删除文件
unlink("/home/dake/file/test.txt");
执行shell命令
# 执行shell命令
# 两边的括弧是反引号,就是ESC下面的那个按钮,在英文状态下的输出结果
`mkdir -p dir1/dir2 && chmod 755 dir1/dir2`;# 也可以给出返回结果,方便判断 shell 命令执行结果是否正确
my $result = `mkdir -p dir1/dir2 && chmod 755 dir1/dir2`;
特殊变量
@_:接收函数变量的数组,类似于 Java 等面向对象语言的接收参数的对象。
# 定义函数
sub test {my (filed1, filed2, filed3) = @_;# ...
}# 调用函数
test($id, $name, $age);# 调用参数时传递几个,@_参数数组就可以接收几个。
# 如果传递的多了,接收的时候少,不影响
类似于 Java 等面向对象语言的实体类
// 定义函数
public void test (Person person){String id = person.getId();String name = person.getName();String age = person.getAge();// ...
}# 调用函数
Person person = new Person();
person.setId("1");
person.setName("张三");
person.setAge(18);test(person);
那这里的@_是不是就等于上面示例中的person示例呢?
那如果我想获取对应数组中的某个参数呢?使用下标即可。
$id = $_[0];
$name = $_[1];# 以上分别是获取接收参数的第一个和第二个参数
# 注意,下标从0开始
# 注意,接收具体某个参数的符号是$,不能使用数组符号@
$_:表示当前被遍历的元素
perl脚本实战总结相关推荐
- 实战Perl脚本测试
实战Perl脚本测试(转) 这是一篇关于perl脚本测试的总结性文章,其中提到了很多实用的模块,如果文中介绍的不够详细,请到cpan上搜索该模块并查阅其文档. 1基本语法检查 Perl语言的哲学是& ...
- Linux中perl脚本监控
根据公司需求 自己编写的perl脚本 希望可以帮到大家 #!/usr/bin/perl while(1){ open (LOG,">> /var/log/flow.log&quo ...
- linux命令行参数含空格,linux-具有命令行参数和空格的Perl脚本
我觉得我在这里似乎遗漏了一些明显的东西,但是我似乎无法弄清楚发生了什么.我有一个从C代码调用的perl脚本.脚本参数是这样的: my_script "/some/file/path" ...
- Linux脚本实战之猜数字
Linux脚本实战之猜数字 一.脚本要求 二.脚本示例一 三.脚本示例二 一.脚本要求 1.系统环境为RHEL8.0 2.脚本生成一个100以内的随机数,提示用户猜数字. 3.根据用户的输入,提示猜对 ...
- Linux的shell脚本实战之while循环
Linux的shell脚本实战之while循环 一.使用while循环计算 1.计算从1加到100之和 2.计算1-2+3-4+5....-100的值 二.while语句的三种方式 1.通过输入重定向 ...
- Shell脚本实战之文件批量创建和修改
Shell脚本实战之文件批量创建和修改 一.脚本要求 二.脚本内容 三.脚本运行结果 一.脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip, ...
- Linux下Shell脚本实战之监测磁盘空间
Linux下Shell脚本实战之监测磁盘空间 一.脚本目的及要求 二.脚本内容 三.运行脚本 一.脚本目的及要求 (1) 监控/home下每各个用户目录的占用磁盘大小 (2) 监控/var/log下前 ...
- Linux脚本实战之检测网卡流量
Linux脚本实战之检测网卡流量 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.检测网卡流量,并按规定格式记录在日志中,输出到/data/net.log/目录中以执行脚本时间命令的文件中 ...
- Linux下脚本实战之系统监控
Linux下脚本实战之系统监控 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.监控系统的CPU.内存.硬盘使用率 二.脚本内容 #!/bin/bash ################# ...
最新文章
- [转载]Array.prototype.slice.call(arguments,1)原理
- TBluetoothLE.OnDisconnectDevice
- 视图view的生命周期的一点见解
- RabbitMQ(mall学习)
- apache ignite_Apache Ignite本机持久性,简要概述
- ejb 示例 2018_Java EE EJB拦截器教程和示例
- RabbitMQ 简介和使用
- css特性:空白外边距互相叠加
- C++开源矩阵计算工具——Eigen的简单用法(三)
- CSDN创始人蒋涛出席2021 中关村论坛,启动“科创中国”开源创新榜单评选
- java JSONObject JSONArray对象使用小记
- 简历里的软件测试工作描述,软件测试类相关工作的简历范文
- Ubuntu安装显卡驱动
- python画航线图_Python获取航线信息并且制作成图的讲解
- python英语单词 扇贝英语安卓下载_扇贝单词英语版下载-扇贝单词英语版手机客户端APP 3.4.503 安卓版-我游网...
- css属性的书写顺序
- 诗词格律[4] 古体诗
- 各种图论模型及其解答
- 烤仔喊你写作业 | 今天你做出来了吗?
- Js中的this和window.event.srcElement