文章目录
- 一、正则表达式
- 1、元字符
- 二、模块
- 三、面向对象编程
- 1、package
- 四、多线程
- 1、fork函数
- 2、子进程间的通信
- 五、仿真脚本
一、正则表达式
1、元字符
m/.../:匹配语法,把元字符放在中间
| 字符 | 含义 |
|---|---|
| \ | 转义字符 |
| \b | 匹配单词边界 |
| \B | 非单词边界 |
| \d | 数字,就是 0-9 中的任一个字符 |
| \D | 非数字 |
| \w | 匹配大小写字母和下划线 |
| \W | 非大小写字母和下划线 |
| \s | 匹配空白字符,包括空格、制表符等 |
| \S | 非空白字符 |
| \n | 换行符,ASCII 的 0x0A |
| \t | 制表符 |
| \x | 后接十六进制数,匹配这个数的 ASCII 符号 |
| 字符 | 含义 |
|---|---|
| ^ | 匹配开头 |
| $ | 匹配结尾 |
| . | 区配除换行符以外的所有字符 |
| * | 匹配零次或多次 |
| + | 匹配一次或多次 |
| ? | 匹配零次或一次 |
| () | 取值,分别存放到$1, $2, $n里面 |
| [] | 多选一,[a-z],[0-9] |
| {n} | 匹配 n 次 |
| {n,m} | 匹配 n 到 m 次 |
| ? | 当?跟在*,+,?等后面时,表示非贪婪模式,只匹配一次 |
| =~ | 满足匹配 |
| !~ | 不满足匹配 |
| 字符 | 含义 |
|---|---|
| i | 忽略大小写 |
| m | 多行处理,即字符串中的换行符把字符串分为多行。匹配时不能越行 |
| s | 单行处理,在这个模式下,元字符.可以匹配换行符 |
| x | 允许正则表达式换行和加注释,忽略空白字符 |
| e | 用于替换,表示替换的新值要先计算,s/(ab+c)/&replace($1)/e |
举例:perl正则表达式非常强大,可以干很多事情
//提取RTL端口定义,例如input reg [2:0] a;分别把输入类型、位宽、变量名称存储到$1, $2, $3
m/(output|input|inout)\s+wire|reg\s*(\[.*\])?(\w+),///查看当前目录是否为项目根目录
$pwd =~ m/\/(trunk|tags|release)$/
二、模块
module:完成特定功能的 Perl 库文件
模块的后缀名是 pm,文件名必须与模块名相同
三、面向对象编程
1、package
perl 中的“类”用 package 来定义,包里的函数就是类的方法
四、多线程
1、fork函数
根据 fork()函数的返回值来判断当前进程是子进程还是主进程。子进程返回值是 0,主进程返回值是子进程 ID 号(不为 0)。
waitpid():等待指定的子进程结束
2、子进程间的通信
pipe:管道
五、仿真脚本















