專家指導(dǎo) Perl學(xué)習(xí)筆記
本文和大家重點討論一下Perl學(xué)習(xí)筆記,Perl是一種能完成任務(wù)的語言。從一開始,Perl就設(shè)計成可以把簡單工作簡單化,同時又不失去處理困難問題能力的語言。
Perl學(xué)習(xí)筆記
一、Perl基礎(chǔ)
1.常用命令
1.1perl–v顯示Perl版本,測試Perl是否安裝
1.2perldoc–tf<函數(shù)名>查找函數(shù)信息
1.3perldoc–q<key>查找FAQ
1.4perl是一種解釋型語言,不需要編譯;Python是虛擬機語言,要編譯。
二、Perl的構(gòu)件:數(shù)據(jù),字符串
1.轉(zhuǎn)義字符用\<symbol>表示
2.qq,q運算符,使用非字符或數(shù)字作為限定符
3.標(biāo)題變量$<key>
4.chomp刪除換行符
5.<stdin>輸入設(shè)備
6.格式化字符串直接在字符串中引用標(biāo)量
三、Perl控制程序流
1.空undef
2.last,redo,next都可以跟標(biāo)號
3.exit0正常退出程序
四、Perl列表/數(shù)組
1.qw運算符聲明列表
2.定義范圍1..20
3.定義數(shù)組@<key>
4.引用數(shù)組元素$<key>[index]
5.查找數(shù)組大小$size=@array
6.$#foo***一個元素的索引號
7.localtime返回一個表示當(dāng)前時間的時間元素列表
8.for,foreach$var(@array)
9.split函數(shù)
10.join函數(shù)
11.sort給數(shù)組排序
12.<=>飛船運算符
13.scalar函數(shù),強制轉(zhuǎn)換為一個標(biāo)量放入標(biāo)量上下文,返回放入的數(shù)量
scalar@_;
五、Perl文件操作
1.die函數(shù)
2.$!用來在die函數(shù)中返回操作系統(tǒng)的出錯消息
3.warn
4.defined<>undef
5.$_foreach讀出的系統(tǒng)變量
例:
open(MYFILE,"c:/manifest.mf")||die"err:$!";#p#
六、Perl正則表達式
1.正則表達式中的元字符:
${}#^@|?.+*[\
2.將模式串括起來的字符可以是任意的元字符;除非使用非斜扛分隔符,否則可以不使用m。
3.用[]表示字符類
4.通配符{最少出現(xiàn)次數(shù),***出現(xiàn)次數(shù)
5.特殊字符類
\w單詞字符
\W非單詞字符
\d數(shù)字
\D非數(shù)字
\s空白字符
\S非空白字符
6.選擇|
7.位置通配符
^一行開始
$一行結(jié)尾
8.替換
s/$searchpatten/replacement/;
9.修飾符
/g重復(fù)多次匹配
/I忽略大小寫
七、Perl哈希結(jié)構(gòu)
1.用%聲明%hash=("k1","v1","k2","v2");
2.用=>分隔鍵和值聲明%hash2=("k1"=>"v1","k2"=>"v2");
3.引用哈希值$hash{"k1"}
4.用keys檢索哈希表的關(guān)鍵字
foreach(keys%hash){
print"$_\n";
}
5.用values檢索哈希表中所有值
foreach(values%hash){
print"$_\n";
}
5.reverse%hash轉(zhuǎn)換成列表,鍵值對換
6.哈希合并%h={%h1,%h2}
7.測試哈希值是否存在if(exists$hash(keyval))
8.刪除哈希值delete$hash(keyval)
9.刪除所有鍵值%hash={}
10.查找數(shù)組中的所有唯一元素
八、Perl函數(shù)
1.聲明函數(shù)
subsubFun{
for($i=0;$i<10;$i++){
print$i;
}
Return(true);
}
2.參數(shù)
@_表示隱含參數(shù)列表
$_[2]表示第二個參數(shù)
($hit,$bats)=@_
例:
subparamFun{
($a,$b)=@_;
print"\na=$a";
print"\nb=$b";
}
3.聲明函數(shù)內(nèi)變量
My$y=500;
九、Perl中其它函數(shù)和運算符
1.indexstring,substring
2.rindexstring,substring
3.substrstring,offset,length
可用于替換字符串
4.tr/searchlist/replacelist/轉(zhuǎn)換運算符
tr/a-z/A-Z/;把大寫轉(zhuǎn)換為小寫
$num=tr/0-9//;計算數(shù)字的數(shù)量
5.=~運算符
代替默認(rèn)環(huán)境變量
$b=$a=~s/a/b/;把$a中a替換為b,賦值給$b
6.printf,sprintf格式化輸出函數(shù)#p#
十、Perl操作文件和目錄
1.opendirTEMPDIR,’c:/’
2.readdir返回的文件名不包含路徑名
3.closedir(TEMPDIR);
4.Glob函數(shù)查詢文件返回的文件名帶路徑
5.grep查詢文件返回的文件名不帶路徑
6.chdir
7.mkdir
8.rmdir只刪除完全是空的目錄
9.unlink刪除目錄下所有文件,并返回文件數(shù)量
10.rename
11.Example:
12.chmod賦予權(quán)限
13.statfilename;statfilehandle返回文件句柄信息
#打開目錄下的所有txt文件
- opendir(TD,"C:/TEMP")||die"error:$!";
- @FILES=grep(/\.txt$/,readdirTD);
- foreach(@FILES){
- print$_;
- openFILEH,"C:/TEMP/$_"||die"can'topenfile:$!";
- foreach(<FILEH>){
- printscalar($_);
- }
- }
- @files=glob("C:/TEMP/*.txt");
- foreach(@files){
- print$_;
- }
十一、Perl系統(tǒng)互操作性
1.system調(diào)用操作系統(tǒng)命令,正常返回0;返回1.
十二、Perl中DBM文件
1.DBM文件是與perl哈希結(jié)構(gòu)聯(lián)系在一起的文件結(jié)構(gòu)。
2.將哈希結(jié)構(gòu)與dbm關(guān)聯(lián)起來
Dbmopen(hash,filename,mode);
3.each函數(shù),對較大的哈希結(jié)構(gòu)迭代操作
($key,$val)=each(%h);
4.open的限定符
<file只讀
>file只寫,不存在創(chuàng)建,重寫
>>只寫,創(chuàng)建,追加
5.隨機讀取文件
Seek(fileHandle,Offset,相對位置)函數(shù)
6.鎖定UNIX和NT下的文件
Flock(FILEHANDLE,locktype);
FL_SH公共鎖
FL_EX專用鎖
7.讀寫鎖控制:設(shè)置一個信標(biāo)文件
十三、Perl引用和結(jié)構(gòu)
1.創(chuàng)建對變量的引用
$ref=\$a;
2.輸出地址引用的值
Print$$ref
3.對數(shù)組和哈希表的引用
$$a[0]
@$a
%$a
$$a{xx}
4.列表中的列表
@list_of_lists={[qw(xxx)],[qw(ddf)]};
5.遍歷數(shù)組
foreachmy$outer(@list_of_lists){
print$outer;
foreachmy$inner(@($outer)){
print$inner;
}
}
十四、Perl使用模塊
1.use引用其它模塊
例:cwd獲取環(huán)境變量
Strict改變程序運行特性,使之對引用和裸單詞變得嚴(yán)謹(jǐn)
十五、Perl歷史
定位于解釋型語言,適合作為CGI語言
【編輯推薦】
- 深入剖析Perl面向?qū)ο缶幊?/a>
- 淺析Perl標(biāo)量的操作符
- Perl語言中的五大變量類型
- Perl面向?qū)ο缶幊痰膬煞N實現(xiàn)和比較
- Perl程序設(shè)計中的Perl用戶函數(shù)(子程序)