由于公司需要,本人最近在學(xué)習(xí)Perl這類腳本語言,本文是我在學(xué)習(xí)Perl的進(jìn)程中總結(jié)出來的1些心得和筆記,希望能夠幫助也在學(xué)習(xí)Perl的各位同寅。空話不多說直接上干貨!!!
————————————————— 干貨分割線 —————————————————
1.甚么是調(diào)試程序
P e r l調(diào)試程序是個P e r l解釋程序的內(nèi)置特性。它使你能夠取出任何1個P e r l程序,然后逐一語句運行該程序。在運行進(jìn)程中,你可以查看各個變量,修改這些變量,讓程序運行較長
的時間,中斷程序的運行,或從頭開始運行該程序。
2.啟動調(diào)試程序
若要啟動P e r l調(diào)試程序,必須打開操作系統(tǒng)的命令提示符。若你是D O S和Wi n d o w s用戶,那末要打開M S - D O S的標(biāo)準(zhǔn)提示符C : \。如果是U N I X用戶,這個提示符應(yīng)當(dāng)是你登錄時顯示的提示符(通常是%或$)。PS:本例中使用D O S提示符,以perl9中的程序為例(可查看博客perl9的內(nèi)容)
啟動調(diào)試程序:
perl -d Employee.pl
輸出該命令后,會顯示版本信息:
該調(diào)試程序首先顯示版本號和help 提示。接著顯示該程序的第1行可履行代碼。由于第1個語句實際上包括7行,從“my @employees=(”開始,以“);”為結(jié)尾,因此所有7行語句均顯示1個描寫,以說明它們來自甚么文件,和它們是在文件的哪1行或哪幾行上找到的(第5至第11行)。
最后,你看到調(diào)試文件的提示符D B < 1 >。1表示調(diào)試文件正在等待它的第1個命令。調(diào)試程序提示符后面的光標(biāo)正等待你輸入命令。這時候,你的P e r l程序?qū)嶋H上暫停在第1個指令-my @employees=(的前面。每當(dāng)調(diào)試程序向你顯示程序中的1個語句時,它就是準(zhǔn)備要履行的語句,而不是上1個運行的語句。現(xiàn)在調(diào)試程序已作好準(zhǔn)備,等待你輸入命令。
3.調(diào)試程序的基本命令
1>.h:幫助命令,所有可用命令均被輸出.
2>.h h:幫助命令的變形版本,可以輸出命令和語句的匯總.
3>.h cmd:輸出某個命令的幫助信息.
4>.|:每次顯示1屏幕命令.如:查看1屏幕幫助可用:|h.
5>.n:運行perl程序的下1個語句
當(dāng)你鍵入命令n后,perll就履行Employee程序的第5至11行語句。然后調(diào)試程序輸出要履行的下1個語句(但還沒有運行) m y ( $ L 1,$ F 1 ) = s p l i t(’,’,$ a);并顯示另外一個提示符。
當(dāng)程序運行到這個時候, @ e m p l o y e e s被初始化為5個名字和工資等。若要查看這些信息,可以將它們輸出:
print @employees [原始版]
顯示:
也能夠更清楚的顯示輸出信息,鍵入:
Print join(“\n”,@employees) [升級版]
顯示:
4.斷點
如果不是每次履行1個指令,你可讓調(diào)試程序連續(xù)運行你的P e r l程序,直到到達(dá)某個語句,然后停止運行。這些停止運行的位置稱為斷點。
若要設(shè)置斷點,請使用b breakpoint命令,其中breakpoint可以是行號或子例程名。若要在第3 3行上設(shè)置斷點,可以輸入下面這個命令:
b 33
你可使用l命令來閱讀程序行,看看哪行合適添加斷點(斷點不能設(shè)置在花括號、標(biāo)點符號、空行或只包括注釋的代碼行上)。命令l用于列出程序的下面1 0行。再次鍵l,可以列出下面的1 0行,如此類推。若要列出從某1行開始的程序,請鍵入l lineno,其中l(wèi)ineno是程序的行號。也能夠設(shè)定要列出的行的范圍,方法是鍵入命令l start-end。
鍵入:l
顯示:
PS:,標(biāo)號= = = >用于指明調(diào)試程序準(zhǔn)備履行確當(dāng)前行.
命令c:。命令c向調(diào)試程序發(fā)出指令,使P e r l程序運行到下1個斷點或程序的結(jié)尾:
顯示:
命令d:若要撤銷程序中的斷點,可以采取命令d,比如d line 或d submane.
命令R:重新啟動你的程序,該命令使perl程序回到它的開始處.
命令s:單步進(jìn)入設(shè)置斷點的程序行中.s命令的作用是履行函數(shù),然后在函數(shù)中的第1個指令處停止運行.
還可以在P e r l程序運行時修改程序里的變量。例如,若要給員工每小時臨時增加2 . 5 0美元
的工資,可以輸入下面的代碼:
print $hourly
$hourly = $hourly + 2.50,以下:
命令q:退出調(diào)試程序
5.單命令行程序
這類程序的關(guān)鍵是在命令行上賦予P e r l的- e開關(guān)。- e的后面可以是任何P e r l語句,如:
Perl -e “print ‘hello,world’;”
顯示:
插入多個語句:
perl -e "print 'hello,world';" -e "print'howzit goin?'"
顯示:
-c:P e r l解釋程序中的- c開關(guān)可供P e r l用來查看你的代碼,以便找出語句上的問題,但是它實
際上其實不運行程序,當(dāng)程序正確時,顯示:
當(dāng)程序毛病時,報錯,顯示:
6.<>與更多單命令行程序
迄今為止介紹的尖括號運算符( < >)具有兩個功能:
1) 如果尖括號中間是文件句柄,尖括號運算符允許你讀取文件句柄,比如< S T D I N >。
2) 如果尖括號中間是搜索模式,尖括號運算符能返回與該模式匹配的文件列表,這稱為1個glob,比如< * . b a t >。
尖括號運算符還有另外一個功能。1組尖括號運算符如果中間沒有任何東西,那末它可以讀取命令行上所有文件的內(nèi)容;如果沒有給出文件名,則可以讀取標(biāo)準(zhǔn)輸出。
Exp:
perl -w Example.pl file1 file2 file3
便可使運算符< >讀取f i l e 1的內(nèi)容,每次讀1行,然后讀取f i l e 2,接著讀取f i l e 3。
[未完待續(xù)]