跳转至内容

Perl 编程/练习 3

来自维基教科书,开放世界中的开放书籍

读取和写入文件

[编辑 | 编辑源代码]

编写一个程序来读取磁盘上的文件,并将其保存为一个新的文本文件。(确保你没有处理重要的文档!)尝试下载一个公共领域的书籍 [1] 来测试你的程序如何处理大型文本文件。

使用正则表达式搜索文本

[编辑 | 编辑源代码]

修改你的程序,使其只复制以“Chapter 1”或其他类似标识符开头的文本行。尝试识别每个章节号,并对其进行一些简单的数学运算。显示书籍中的章节数量,以及每个章节包含的行数。

在文本中加入一个正则表达式来搜索重复出现的单词。使其即使单词的大小写不同也能找到重复出现的单词。

尝试搜索以“de”开头,以元音结尾的单词。编写一个搜索以识别文本中的数字,无论它们是否有小数点、负号等。如果你愿意,你也可以尝试找到以文字形式写出的数字。

在你选择的书籍中,有多少个不同的专有名词?有多少个问题?

进行搜索和替换

[编辑 | 编辑源代码]

修改文件复制程序,使其搜索每个单词的实例,并在输出文件中将其替换为另一个单词。检查程序是否正确运行。你是否信任它来处理重要的文档?

编写一个程序来将每个句子的首字母大写,并对其进行测试。确保它不会被数字、缩写和标题中的句号所误导。

编写一个程序来搜索书籍中的数字,并将每个数字加 10。编写一个程序来搜索括号中的表达式(10+3/2),并将它们替换为结果(11.5)。检查它在表达式中写入(print "hello";)代码时是否不会做任何危险的事情。

对程序进行基准测试

[编辑 | 编辑源代码]

使用 Time::HiRes 模块或基准测试模块,修改你的程序之一,以显示运行时间。

尝试使用基准测试系统来确定你的程序中哪一行代码运行时间最长。哪一行代码运行次数最多?

将所有内容整合在一起

[编辑 | 编辑源代码]

编写一个程序,它搜索目录中与提供的正则表达式匹配的文件。显示在特定目录集中运行程序所花费的时间。

修改程序,使其搜索目录树,而不仅仅是一个目录。

测试不同的搜索请求如何影响搜索所需的时间。看看你是否能找到一个永远不会结束的正则表达式(按下 ctrl-c 停止一个繁忙的 Perl 程序)。然后尝试重写该正则表达式,以更快地完成相同的任务。

答案

上一练习 | 下一练习

华夏公益教科书