perl

这篇博客介绍了Perl编程的基础知识,包括使用-w警告、变量声明(如标量、数组)、正则表达式、控制结构(如foreach、while、until)以及文件处理。还涉及到了哈希、引用、逻辑运算符和位运算符等内容,并给出了相关实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用内建警告信息
在运行时,加上 -w
¥perl -w my_program
#!/usr/bin/perl/ -w
#!/usr/bin/perl
use warinings
在这里插入图片描述

在这里插入图片描述

use diagnostics 如果要查看更详细的信息可以用这个

use strict 强制终止程序的执行直到程序问题被解决
1、会避免错误拼写
2、限定变量的范围

如何使用帮助文档perldoc

标量$
数字标量 全部为双精度浮点数
$data = 10;
$data = 10.00;是一样的,都会被转到双精度浮点
较长的,可以用下划线隔开(跟verilog一样)
非十进制
八进制 0开头
16 :0x 0xFF
2 :0b 0b111111
字符串标量
$data =“HEllo” 单双引号可以灵活运用
在这里插入图片描述
在这里插入图片描述
标量的声明
可以在任意时刻随时声明,默认值为空
作用域
包变量:perl中的package是一个包,在默认的情况下,标量是包内的全局变量
私有变量:
my变量,本层模块{}之间可以
local变量,本层已经本层之下的模块,子函数,可以

数组
是标量的一中合集
以@作为标识,从0到全部占满内存
列表直接量
(1,2,3) ##包含1,2,3的列表
(1,2,3,)##最后,会被省略
(“test”,1,2)
可以用“…"产生,每次加1
(1…5) ##1,2,3,4,5
(5…1) 空列表
纯字符串使用qw,可以省略“”
qw(fajfdls,fafasf,fdafs)
在这里插入图片描述
数组之间赋值
在这里插入图片描述
特殊数组赋值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过索引访问数组元素
在这里插入图片描述
特殊索引值在这里插入图片描述
在这里插入图片描述
引用
变量、变量名、地址

在这里插入图片描述
软引用
在这里插入图片描述
根据不同的指令,区分到底是引用的是标量还是数组
硬引用
在这里插入图片描述
在这里插入图片描述
标量可以省略{},但是数组不行
要区分的是引用和拷贝的区别,引用的话,修改引用的值,会影响原件,但是拷贝的话,修改拷贝后得值,不会影响原件。
下面展示一些 内联代码片

最后改变结果是 hello >hello2,而没有hello3
// 
my $scalar = "hello";
my @array = ("hello","world","123");
my $scal_ref = \$scalar;
my $arr_ref = \@array;

##copy
my $scal_com = $scalar;
my $ array_0 = $array[0];

$$scal_ref = "hello2";
${$arr_ref}[0] = "hello2";

$scalar_com = "hello3";
$arr_ref = "hello3";

数据运算
运算符
算数运算符
用字符串做四则运算,从左往右看数字,第一位都不是数字的直接为0
在这里插入图片描述

乘幂操作 :**
在这里插入图片描述

取余
在这里插入图片描述
在这里插入图片描述
单目操作
在这里插入图片描述
在这里插入图片描述
单个单目符要用括号

在这里插入图片描述
比较
在这里插入图片描述
前大于后 1 一样0 小于 -1

在这里插入图片描述
在这里插入图片描述
逻辑
和verilog一样
在这里插入图片描述
逻辑与只要两个不是0.则与出来是1

位运算符

在这里插入图片描述
左移的时候会自动增加位数,剩下的补零
右移的话,也是剩下的补零
不要用在负数
赋值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
逗号运算符
在这里插入图片描述
条件运算符
在这里插入图片描述
在这里插入图片描述
运算符的优先和结合
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
perl控制结构

在这里插入图片描述
最后一种情况执行语句只能是一个
在这里插入图片描述

在这里插入图片描述
foreach

在这里插入图片描述
将一个数组赋值给字符串实际上是赋值数组的个数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
对item修改的话,也是对array修改。
$_ :默认变量
在这里插入图片描述
foreach取得元素的方式是随机的
在这里插入图片描述
按照从小到大进行排列
其他控制

while
1、计数控制
在这里插入图片描述
2、特殊值控制
在这里插入图片描述
3、用户交互值控制
循环的跳出仍然用last

在这里插入图片描述
在这里插入图片描述
until:条件为假的时候,既要执行until 也要执行continue
在这里插入图片描述
如果条件为真,until和continue都不执行

switch控制
switch(条件)
case 条件1:执行;
。。。
default 执行语句
back goto back
在这里插入图片描述

在这里插入图片描述
perl正则表达式 匹配的作用

简单模式

$`: 匹配部分的前一部分字符串
$&: 匹配的字符串
$’: 还没有匹配的剩余字符串
在这里插入图片描述
如果有world,则返回值就是1.就会打印,如果匹配项本身有/,就要用反斜线
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
换行符也是space
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
+表示重复,world+ 则是worlddddddd

在这里插入图片描述
在这里插入图片描述
用|来表示或
在这里插入图片描述

元字符
元字符是一中特殊字符
在它前面加上/,则这些元字符代表自己本身的含义
字符类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
模式匹配
m//
//
m?//?
在这里插入图片描述

在这里插入图片描述
用$1代表第一个括号,$0又特殊含义,代表整个程序
模式匹配的选项
/g 忽略所有可能的模式
在这里插入图片描述
如果不加g,第一种情况只匹配一次。返回1或者零

/i 忽略大小写
在这里插入图片描述
/m 将字符串视为多行
/s 将字符串视为单行
在这里插入图片描述
/x 忽略空格
在这里插入图片描述
模式替换返回为布尔量,如果进行替换,就返回1
s//
s??
在这里插入图片描述
在这里插入图片描述
/e 就是把字符串进行计算之后
模式转化
tr//
模式替换是将整体abc替换,
模式转换是单个的进行替换
返回值是返回被替换的个数
在这里插入图片描述
如果前面的字符个数比后面多,多出来的都转为最后一个C
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
/c 将未指定的替换为一个空格
/d 删除
/cs c 把未指定的转为为空格,s是将多个空格转为一个

正则表达式的原则
原则二:只是对标量进行匹配
原则三:默认只匹配/替换一次,且对象为最早的匹配在这里插入图片描述在这里插入图片描述
原则5 结果状态和反向应用
在这里插入图片描述
原则6 核心能力在于通配符和多重匹配运算符
在这里插入图片描述
原则7 用|来增加灵活性
在这里插入图片描述
原则8 用?给正则表达式提供扩展功能
在这里插入图片描述
在这里插入图片描述
括号里是前面接着的

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
如果没有,则匹配上。和 ?=相反
在这里插入图片描述在这里插入图片描述
括号里面没有存储,本身不参与匹配。
实例
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200515162957151.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTI4NzkxNg==,size_16,color_FFFFFF,t_70
在这里插入图片描述
因为贪婪:.* 会尽可能地多匹配,所以整个test3target都会被认为是.*

在这里插入图片描述在这里插入图片描述

哈希 类似于数组,存放标量

键不能相同
可以相同
命名方式:
%class,
$calss{“Li”}
Li是键,
在这里插入图片描述

多维哈希
标签有可能有很多个
$class{“Li”}{“”ENGLISH}
多维的哈希,前面几级也可以看成是hash
在这里插入图片描述
哈希与数组
数组,相对引用,
在这里插入图片描述
哈希,绝对引用
在这里插入图片描述
创建hash
%hash_A();
列表直接赋值:
在这里插入图片描述
key是键,value是值
用=>来代替,可以看除键与值之间的对应关系
在这里插入图片描述
指定键进行赋值
$hash{“key1”} = value1;
$hash{“key1”}{“key3”} = value2;
%hash_A = %hash_B;
B中的值改变了,A中的值不会改变。
多维hash的赋值用括号来标识;
在这里插入图片描述

获取Hash的长度在这里插入图片描述
哈希的排序,使用sort排序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
子程序在前面,则不用&
** 前向引用**
在这里插入图片描述
用do来调用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
外参数和内参数对应
传递数组参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1是因为print成功了,有返回值

在这里插入图片描述
如果是一个标量+一个数组,是没有合并的
在这里插入图片描述

my 标量,只在所处block,子函数里面看不到
local 在子函数可以看到
在这里插入图片描述
在这里插入图片描述
number2在子程序看不到,但是@是赋值的,赋值到子程序就可以看到
子程序之间的变量交互
通过引用来传递变量
引用是地址,其中一个子程序对引用的数据改变的话,另外一个子程序就可以拿到最新的数据。
在这里插入图片描述
@
在某个函数内,数组 @_ 包含传递给该函数的所有参数。
默认的输入/输出和格式匹配空间1.@是函数传参时放置参数的数组,可以从中取实参,比如my(_ 默认的输入/输出和格式匹配空间 1.@_ 是函数传参时放置参数的数组,可以从中取实参, 比如 my(/1.@my(para1,para2...)=@,函数调用时填了几个参数,便可以从该数组中取到几个参数。2.para2...)=@_, 函数调用时填了几个参数,便可以从该数组中取到几个参数。 2.para2...)=@,便2._ 是默认参数的意思,指的是在不指定的情况下,程序处理的上一个变量,比如
open(IN,"<file.txt")
while()
{
print $_;
}
close(IN);
实例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述my $numer = @ $ref 是取得数组元素的个数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

perl文件处理
perl句柄
打开文件
读写文件
文件测试运算符
综合实例
在这里插入图片描述
句柄是一种特殊的数据类型
在这里插入图片描述
STDIN
在这里插入图片描述
STDOUT
在这里插入图片描述
在这里插入图片描述
STDERR
在这里插入图片描述
在这里插入图片描述
自定义句柄

打开文件
在这里插入图片描述
在这里插入图片描述
如果没有指定绝对路径,只会在当前路径找
在这里插入图片描述
在这里插入图片描述
用正斜线

在这里插入图片描述
在这里插入图片描述
die函数

在这里插入图片描述
$!在这里插入图片描述
warn 不会终止程序

在这里插入图片描述
文件的读取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件读取操作符,只能操作一次,也就是每次都输出一行,
在这里插入图片描述
也可以用数组一次性接收全部的内容,但是大文件的话,占用内存太大
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
追加模式 换行
关闭句柄

二进制文件的模式
在这里插入图片描述
在这里插入图片描述
把ASIC码转为二进制

文本测试运算符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在写文件之前看是否可以写
在这里插入图片描述
在这里插入图片描述
-M是指被修改以来的日期
综合实例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值