程序员人生 网站导航

Perl语言入门(12 perl调试程序...)

栏目:php教程时间:2016-11-19 14:20:11

由于公司需要,本人最近在学习Perl这类脚本语言,本文是我在学习Perl的进程中总结出来的1些心得和笔记,希望能够帮助也在学习Perl的各位同寅。空话不多说直接上干货!!!

————————————————— 干货分割线 —————————————————

1.甚么是调试程序

P e r l调试程序是个P e r l解释程序的内置特性。它使你能够取出任何1个P e r l程序,然后逐一语句运行该程序。在运行进程中,你可以查看各个变量,修改这些变量,让程序运行较长

的时间,中断程序的运行,或从头开始运行该程序。

2.启动调试程序

若要启动P e r l调试程序,必须打开操作系统的命令提示符。若你是D O S和Wi n d o w s用户,那末要打开M S - D O S的标准提示符C : \。如果是U N I X用户,这个提示符应当是你登录时显示的提示符(通常是%或$)。PS:本例中使用D O S提示符,以perl9中的程序为例(可查看博客perl9的内容)

 

启动调试程序:

perl -d Employee.pl

输出该命令后,会显示版本信息:

 


该调试程序首先显示版本号和help 提示。接着显示该程序的第1行可履行代码。由于第1个语句实际上包括7行,从“my @employees=”开始,以“);”为结尾,因此所有7行语句均显示1个描写,以说明它们来自甚么文件,和它们是在文件的哪1行或哪几行上找到的(第5至第11行)。

最后,你看到调试文件的提示符D B < 1 >。1表示调试文件正在等待它的第1个命令。调试程序提示符后面的光标正等待你输入命令。这时候,你的P e r l程序实际上暂停在第1个指令-my @employees=(的前面。每当调试程序向你显示程序中的1个语句时,它就是准备要履行的语句,而不是上1个运行的语句。现在调试程序已作好准备,等待你输入命令。

 

3.调试程序的基本命令

1>.h:帮助命令,所有可用命令均被输出.

2>.h h:帮助命令的变形版本,可以输出命令和语句的汇总.

3>.h cmd:输出某个命令的帮助信息.

4>.|:每次显示1屏幕命令.:查看1屏幕帮助可用:|h.

5>.n:运行perl程序的下1个语句

当你键入命令n后,perll就履行Employee程序的第5至11行语句。然后调试程序输出要履行的下1个语句(但还没有运行) m y ( $ L 1,$ F 1 ) = s p l i t’,’,$ a);并显示另外一个提示符。

 

当程序运行到这个时候, @ e m p l o y e e s被初始化为5个名字和工资等。若要查看这些信息,可以将它们输出:

print @employees  [原始版]

显示:

 

也能够更清楚的显示输出信息,键入:

Print join(\n,@employees)  [升级版]

显示:

 

4.断点

如果不是每次履行1个指令,你可让调试程序连续运行你的P e r l程序,直到到达某个语句,然后停止运行。这些停止运行的位置称为断点

若要设置断点,请使用b breakpoint命令,其中breakpoint可以是行号或子例程名。若要在第3 3行上设置断点,可以输入下面这个命令:

b 33

你可使用l命令来阅读程序行,看看哪行合适添加断点(断点不能设置在花括号、标点符号、空行或只包括注释的代码行上)。命令l用于列出程序的下面1 0行。再次键l,可以列出下面的1 0行,如此类推。若要列出从某1行开始的程序,请键入l lineno,其中lineno是程序的行号。也能够设定要列出的行的范围,方法是键入命令l start-end。

键入:l

显示:

 

PS:,标号= = = >用于指明调试程序准备履行确当前行.

命令c:。命令c向调试程序发出指令,使P e r l程序运行到下1个断点或程序的结尾:

显示:

 

命令d:若要撤销程序中的断点,可以采取命令d,比如d line 或d submane.

命令R:重新启动你的程序,该命令使perl程序回到它的开始处.

命令s:单步进入设置断点的程序行中.s命令的作用是履行函数,然后在函数中的第1个指令处停止运行.

还可以在P e r l程序运行时修改程序里的变量。例如,若要给员工每小时临时增加2 . 5 0美元

的工资,可以输入下面的代码:

print $hourly

$hourly = $hourly + 2.50,以下:

 

命令q:退出调试程序

 

5.单命令行程序

这类程序的关键是在命令行上赋予P e r l的- e开关。- 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开关可供P e r l用来查看你的代码,以便找出语句上的问题,但是它实

际上其实不运行程序,当程序正确时,显示:

 

当程序毛病时,报错,显示:

 

 

6.<>与更多单命令行程序

迄今为止介绍的尖括号运算符( < >)具有两个功能:

1) 如果尖括号中间是文件句柄,尖括号运算符允许你读取文件句柄,比如< S T D I N >。

2) 如果尖括号中间是搜索模式,尖括号运算符能返回与该模式匹配的文件列表,这称为1个glob,比如< * . b a t >。

尖括号运算符还有另外一个功能。1组尖括号运算符如果中间没有任何东西,那末它可以读取命令行上所有文件的内容;如果没有给出文件名,则可以读取标准输出。

Exp:

#!/usr/bin/perl -w use strict; use warnings; while(<>){ print $_; }
如果将上面的程序保存为E x a m p l e . p l,那末用下面这个命令行运行该程序:

perl -w Example.pl file1 file2 file3

便可使运算符< >读取f i l e 1的内容,每次读1行,然后读取f i l e 2,接着读取f i l e 3。

 [未完待续]


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐