本公眾號(hào)【讀芯樹(shù):duxinshu_PD】主要介紹數(shù)字集成電路物理設(shè)計(jì)相關(guān)知識(shí),才疏學(xué)淺,如有錯(cuò)誤,歡迎指正交流學(xué)習(xí)。
這是集成電路物理設(shè)計(jì)的第七個(gè)系列【腳本語(yǔ)言】的第十八篇文章,本篇文章主要介紹perl相關(guān)內(nèi)容:
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;
#創(chuàng)建一個(gè)新目錄
$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
—
特殊變量
#全局標(biāo)量特殊變量
$_ #默認(rèn)輸入/模式匹配內(nèi)容
$ARG #默認(rèn)輸入/模式匹配內(nèi)容
$ARGV #從默認(rèn)的文件句柄中讀取當(dāng)前文件名
$. #前一次讀的文件句柄當(dāng)行行號(hào)
$? #返回上一個(gè)外部命令的狀態(tài)
$! #返回錯(cuò)誤信息的值
$@ #eval命令的錯(cuò)誤信息,如果為空,表示eval命令執(zhí)行成功
$$ #當(dāng)前運(yùn)行perl的進(jìn)程號(hào)
$0 #當(dāng)前正在執(zhí)行的腳本文件名
$[ #數(shù)組第一個(gè)元素的下標(biāo),默認(rèn)為0
#全局?jǐn)?shù)組特殊變量
@ARGV #腳本命令行參數(shù)列表
@INC #導(dǎo)入模塊需要搜索的目錄列表
@F #命令行數(shù)組輸入
#全局哈希特殊變量
%INC #文件路徑
%ENV #當(dāng)前環(huán)境變量
#全局特殊文件句柄
ARGV #遍歷數(shù)組變量@ARGV中所有文件名的特殊文件句柄
STDERR #標(biāo)準(zhǔn)錯(cuò)誤輸出句柄
STDIN #標(biāo)準(zhǔn)輸入句柄
STDOUT #標(biāo)準(zhǔn)輸出句柄
#全局特殊變量
__FILE__ #當(dāng)前文件名
__LINE__ #當(dāng)前行號(hào)
__END__ #忽略后面文本
__PACKAGE__ #包的名字
#正則表達(dá)式特殊變量
$n #上次模式匹配的第n個(gè)子串
$& #上次匹配成功的字符串
$` #上次匹配成功的子串之前的內(nèi)容
$' #上次匹配成功的子串之后的內(nèi)容
$+ #格式匹配的最后一個(gè)括號(hào)
03
—
正則表達(dá)式
m// #匹配 =~表示匹配, !~表示不匹配
i: 忽略大小寫(xiě);m:多行模式;o:僅賦值一次;s:但行模式;x:忽略模式中空白;g:全局匹配;cg:全局匹配失敗后,允許再次查找。
$` #匹配部分的前一部分字符串
$& #匹配字符串
$' #匹配字符剩余的部分
#匹配
$str='this is a string';
if ($str=~/is/) {
print 'pattern is found!\n'
}
s/old/new/ #替換
i:忽略大小寫(xiě);m:行開(kāi)頭和結(jié)尾是“^”和“$”; s:'.'包括換行符;x:忽略空白符;g:替換所有匹配字符串。
$str='this is a string';
$str=~s/this/that/; #將this替換為that
print '$str\n';
tr/// #轉(zhuǎn)化
c:轉(zhuǎn)化所有未制定字符;d:刪除所有指定字符;s:將多個(gè)相同的輸出字符合并一個(gè)。
$str='this is a string';
$str=~tr/a-z/A-Z/; #將小寫(xiě)轉(zhuǎn)化為大寫(xiě)
$str=~tr/\t / /d; #將tab空格刪除
$str=~tr/0-9/ /cs; #提取數(shù)字
04
—
正則表達(dá)式2
. #換行符外任意字符
x? #匹配'x'0次或1次
x* #匹配'x'0次或多次
x+ #匹配'x'1次或多次
.* #匹配任意字符0次或多次
.+ #匹配任意字符1次或多次
{m} #匹配m個(gè)前面指定內(nèi)容
{m,} #匹配m個(gè)或m以上個(gè)前面指定內(nèi)容
{m,n} #匹配大于等于m小于等于n個(gè)前面指定內(nèi)容
[] #匹配[]內(nèi)部字符
[0-9] #匹配數(shù)字
[^] #不匹配[]內(nèi)部字符
[^a-z]#不匹配小寫(xiě)字母
^ #匹配字符開(kāi)頭
$ #匹配字符結(jié)尾
\d #匹配一個(gè)數(shù)字,等于[0-9]
\d+ #匹配多個(gè)數(shù)字,等于[0-9]+
\D #匹配非數(shù)字,等于[^0-9]
\w #匹配字母、下劃線或數(shù)字,等于[a-zA-Z0-9_]
\W #匹配非字母、下劃線或數(shù)字,等于[^a-zA-Z0-9_]
\s #匹配空格,等于[\n\t\r\f]
\S #匹配非空格,等于[^\n\t\r\f]
\b #匹配以字母數(shù)字為邊界的字符串
\B #匹配不以字母數(shù)字為邊界的字符串
a|b|c #匹配a或者b或者c
05
—
進(jìn)程管理
#反引號(hào):可以執(zhí)行Unix命令
$dir='/home/user/tmp/';
chdir ($dir) or die 'no change $dir, $!';
@files=`ls -trl`;
foreach $file (@files) {
print $file;
}
06
—
參考文獻(xiàn)
https://www.runoob.com/perl/perl-tutorial.html
https://www.perl.org/
聯(lián)系客服