文章目录
- 一、正则表达式
- 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:管道