分享

脚本语言介绍——perl(4)

 mzsm 2022-06-22 发布于湖北

本公众号【读芯树: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替换为thatprint '$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次或1x*    #匹配'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.htmlhttps://www.perl.org/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多