# 获取环境变量的值
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正则表达式,主要有三种模式:

  1. 匹配:m//(还可以简写为//,略去m)
  2. 替换:s///
  3. 转化: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脚本实战总结相关推荐

  1. 实战Perl脚本测试

    实战Perl脚本测试(转) 这是一篇关于perl脚本测试的总结性文章,其中提到了很多实用的模块,如果文中介绍的不够详细,请到cpan上搜索该模块并查阅其文档.  1基本语法检查 Perl语言的哲学是& ...

  2. Linux中perl脚本监控

    根据公司需求 自己编写的perl脚本 希望可以帮到大家 #!/usr/bin/perl while(1){ open (LOG,">> /var/log/flow.log&quo ...

  3. linux命令行参数含空格,linux-具有命令行参数和空格的Perl脚本

    我觉得我在这里似乎遗漏了一些明显的东西,但是我似乎无法弄清楚发生了什么.我有一个从C代码调用的perl脚本.脚本参数是这样的: my_script "/some/file/path" ...

  4. Linux脚本实战之猜数字

    Linux脚本实战之猜数字 一.脚本要求 二.脚本示例一 三.脚本示例二 一.脚本要求 1.系统环境为RHEL8.0 2.脚本生成一个100以内的随机数,提示用户猜数字. 3.根据用户的输入,提示猜对 ...

  5. Linux的shell脚本实战之while循环

    Linux的shell脚本实战之while循环 一.使用while循环计算 1.计算从1加到100之和 2.计算1-2+3-4+5....-100的值 二.while语句的三种方式 1.通过输入重定向 ...

  6. Shell脚本实战之文件批量创建和修改

    Shell脚本实战之文件批量创建和修改 一.脚本要求 二.脚本内容 三.脚本运行结果 一.脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip, ...

  7. Linux下Shell脚本实战之监测磁盘空间

    Linux下Shell脚本实战之监测磁盘空间 一.脚本目的及要求 二.脚本内容 三.运行脚本 一.脚本目的及要求 (1) 监控/home下每各个用户目录的占用磁盘大小 (2) 监控/var/log下前 ...

  8. Linux脚本实战之检测网卡流量

    Linux脚本实战之检测网卡流量 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.检测网卡流量,并按规定格式记录在日志中,输出到/data/net.log/目录中以执行脚本时间命令的文件中 ...

  9. Linux下脚本实战之系统监控

    Linux下脚本实战之系统监控 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.监控系统的CPU.内存.硬盘使用率 二.脚本内容 #!/bin/bash ################# ...

最新文章

  1. [转载]Array.prototype.slice.call(arguments,1)原理
  2. TBluetoothLE.OnDisconnectDevice
  3. 视图view的生命周期的一点见解
  4. RabbitMQ(mall学习)
  5. apache ignite_Apache Ignite本机持久性,简要概述
  6. ejb 示例 2018_Java EE EJB拦截器教程和示例
  7. RabbitMQ 简介和使用
  8. css特性:空白外边距互相叠加
  9. C++开源矩阵计算工具——Eigen的简单用法(三)
  10. CSDN创始人蒋涛出席2021 中关村论坛,启动“科创中国”开源创新榜单评选
  11. java JSONObject JSONArray对象使用小记
  12. 简历里的软件测试工作描述,软件测试类相关工作的简历范文
  13. Ubuntu安装显卡驱动
  14. python画航线图_Python获取航线信息并且制作成图的讲解
  15. python英语单词 扇贝英语安卓下载_扇贝单词英语版下载-扇贝单词英语版手机客户端APP 3.4.503 安卓版-我游网...
  16. css属性的书写顺序
  17. 诗词格律[4] 古体诗
  18. 各种图论模型及其解答
  19. 烤仔喊你写作业 | 今天你做出来了吗?
  20. Js中的this和window.event.srcElement

热门文章

  1. 如何用python画国旗?
  2. python的staticmethod,classmethod和装饰器以及闭包的爱恨情仇
  3. 如何优雅的解决”重复请求“问题
  4. THE ADVENTURE BEGINS
  5. Mac下如何用SSH连接远程Linux服务器
  6. OpenGL二次曲面绘制
  7. eclipse护眼豆沙绿
  8. 06 现有原件模型的创建
  9. 深入解读《Gartner2017年商业智能和分析平台魔力象限报告》
  10. OpenSSL 拒绝服务、证书绕过漏洞通告