本公众号【读芯树:duxinshu_PD】主要介绍数字集成电路物理设计相关知识,才疏学浅,如有错误,欢迎指正交流学习。
这是集成电路物理设计的第七个系列【脚本语言】的第十八篇文章,本篇文章主要介绍perl相关内容:
01
—
目录操作
#显示目录下的所有tcl的文件
$dir='/home/user/*.tcl';
my @files=glob($dir);
foreach (@files) {
print '$_\n';
}
opendir (DIR, '/home/user/scr') or die 'no this dir: $!';
foreach (sort grep(/^.*\.tcl$/, readdir(DIR))) {
print '$_\n';
}
closedir DIR;
#创建一个新目录
$dir='/tmp/new_folder';
mkdir ($dir) or die 'no create $dir, $!';
#删除目录
$dir='/tmp/new_folder';
rmdir ($dir) or die 'no create $dir, $!';
#切换目录
chdir ($dir) or die 'no change $dir, $!';
02
—
特殊变量
#全局标量特殊变量
$_ #默认输入/模式匹配内容
$ARG #默认输入/模式匹配内容
$ARGV #从默认的文件句柄中读取当前文件名
$. #前一次读的文件句柄当行行号
$? #返回上一个外部命令的状态
$! #返回错误信息的值
$@ #eval命令的错误信息,如果为空,表示eval命令执行成功
$$ #当前运行perl的进程号
$0 #当前正在执行的脚本文件名
$[ #数组第一个元素的下标,默认为0
#全局数组特殊变量
@ARGV #脚本命令行参数列表
@INC #导入模块需要搜索的目录列表
@F #命令行数组输入
#全局哈希特殊变量
%INC #文件路径
%ENV #当前环境变量
#全局特殊文件句柄
ARGV #遍历数组变量@ARGV中所有文件名的特殊文件句柄
STDERR #标准错误输出句柄
STDIN #标准输入句柄
STDOUT #标准输出句柄
#全局特殊变量
__FILE__ #当前文件名
__LINE__ #当前行号
__END__ #忽略后面文本
__PACKAGE__ #包的名字
#正则表达式特殊变量
$n #上次模式匹配的第n个子串
$& #上次匹配成功的字符串
$` #上次匹配成功的子串之前的内容
$' #上次匹配成功的子串之后的内容
$+ #格式匹配的最后一个括号
03
—
正则表达式
m// #匹配 =~表示匹配, !~表示不匹配
i: 忽略大小写;m:多行模式;o:仅赋值一次;s:但行模式;x:忽略模式中空白;g:全局匹配;cg:全局匹配失败后,允许再次查找。
$` #匹配部分的前一部分字符串
$& #匹配字符串
$' #匹配字符剩余的部分
#匹配
$str='this is a string';
if ($str=~/is/) {
print 'pattern is found!\n'
}
s/old/new/ #替换
i:忽略大小写;m:行开头和结尾是“^”和“$”; s:'.'包括换行符;x:忽略空白符;g:替换所有匹配字符串。
$str='this is a string';
$str=~s/this/that/; #将this替换为that
print '$str\n';
tr/// #转化
c:转化所有未制定字符;d:删除所有指定字符;s:将多个相同的输出字符合并一个。
$str='this is a string';
$str=~tr/a-z/A-Z/; #将小写转化为大写
$str=~tr/\t / /d; #将tab空格删除
$str=~tr/0-9/ /cs; #提取数字
04
—
正则表达式2
. #换行符外任意字符
x? #匹配'x'0次或1次
x* #匹配'x'0次或多次
x+ #匹配'x'1次或多次
.* #匹配任意字符0次或多次
.+ #匹配任意字符1次或多次
{m} #匹配m个前面指定内容
{m,} #匹配m个或m以上个前面指定内容
{m,n} #匹配大于等于m小于等于n个前面指定内容
[] #匹配[]内部字符
[0-9] #匹配数字
[^] #不匹配[]内部字符
[^a-z]#不匹配小写字母
^ #匹配字符开头
$ #匹配字符结尾
\d #匹配一个数字,等于[0-9]
\d+ #匹配多个数字,等于[0-9]+
\D #匹配非数字,等于[^0-9]
\w #匹配字母、下划线或数字,等于[a-zA-Z0-9_]
\W #匹配非字母、下划线或数字,等于[^a-zA-Z0-9_]
\s #匹配空格,等于[\n\t\r\f]
\S #匹配非空格,等于[^\n\t\r\f]
\b #匹配以字母数字为边界的字符串
\B #匹配不以字母数字为边界的字符串
a|b|c #匹配a或者b或者c
05
—
进程管理
#反引号:可以执行Unix命令
$dir='/home/user/tmp/';
chdir ($dir) or die 'no change $dir, $!';
@files=`ls -trl`;
foreach $file (@files) {
print $file;
}
06
—
参考文献
https://www.runoob.com/perl/perl-tutorial.html
https://www.perl.org/
联系客服