Perl文本处理模块用法指导

开发 架构
本文向大家简单介绍一下Perl文本处理模块的用法,Perl的主要目标之一是解析文本。这里主要讨论用于文本解析的CPAN模块,并展示了如何在程序中方便地使用它们。

本文和大家重点讨论一下Perl文本处理模块的用法,Perl是用于文本分析的一种出色语言。内置的操作符使得文本搜索、替换和模式匹配轻而易举。

Perl文本处理模块

Perl的主要目标之一是解析文本。这里主要讨论用于文本解析的CPAN模块,并展示了如何在程序中方便地使用它们。通过使用一些正确的工具,可以使分析代码注释、改编现有记载文法和许多其它任务变得容易。考虑到实际编程,给出了每个任务的示例。

Perl是用于文本分析的一种出色语言。内置的操作符使得文本搜索、替换和模式匹配轻而易举。
CPAN(综合Perl档案网络(ComprehensivePerlArchiveNetwork))汇集了大量模块,有些模块把编程从文本和数据分析的困境中解救出来。

Perl文本处理模块-将Perl模块用于解析、记载和分析

DamianConway开发的Parse::RecDescent是一个对文本进行记载和解析的功能强大的工具。KimRyan开发的Lingua::EN::Fathom可以分析一个文件或一个文本块,并产生有关其输入的各种统计信息。
Parse::RecDescent

缺点:
由于它使用可扩展文法规则并且实时地进行记载和解析,所以比较慢。如果没有正确使用该模块,性能就会降低。
优点:
擅长记载和解析。记载总是比任何其它工具更好地执行任务。

Perl文本处理模块-改编现有的记载文法

JohnHagerman的SwedishChef记载文法是出色的简单文本过滤器示例。它还非常有趣,会给许多计算机科学与工程专业的学生在毕业前夕带来欢乐。我将展示一个使用Parse::RecDescent模块将chef.l文法移植到Perl中的示例(Parse::RecDescent模块并不是实现这一任务的理想选择―Parse::Lex模块会更好些)。这一节只准备介绍构建Parse::RecDescent语法的规则,将包括操作、记忆状态、拒绝产品和对文本进行记载。请记住,自己试一试chef.pl脚本―您很可能会对此着迷。

chef.pl脚本几乎是chef.l记载文法完全一样的副本。$niw变量在启动时设置为0,因为许多规则测试它来判断它们应该被接受还是被拒绝。$niw表示“不在文字中(notinword)”,而当解析器在文字内时,它设置为1。如果Parse::RecDescent的伪指令中指定的变量非零,则该伪指令会拒绝该规则。因此,请牢记$niw=0意味着解析器不在文字内。
skip变量设置为''(空字符串),所以所有输入(包括空格)都转至标志伪指令。此外,chef规则以\z结束,\z表示字符串的结束。通常使用\Z,但那还可以匹配Perl中的换行,它们也都可以在输入中。

◆chef规则:文法以chef规则开始。chef规则匹配许多标志,直至表示字符串结束的\z。chef规则的那两个元素称为“产品”。任何规则都必须由产品组成。操作可以是产品的一部分;它由花括号{}标出,并包含Perl代码。它不匹配任何事物―操作仅用于执行。

◆token规则:token规则可以匹配任何数或序列,这些数和序列是我为匹配chef.1文法而指定的(有些随意)。我将说明一些示例,以便使文法对应清晰。

【编辑推荐】

  1. Perl文件属性函数
  2. 深入学习Perl文件系统用法
  3. Perl引用中直接引用用法解析
  4. Perl语法 解析Perl变量使用
  5. 技术分享 解析Perl模块创建和导入方法
责任编辑:佚名 来源: csdn.net
相关推荐

2013-10-30 10:35:29

Linux命令文本处理

2013-08-20 16:14:46

pythonpython文本处理

2017-03-02 18:10:20

LinuxShell命令

2021-01-28 08:12:15

Linux命令技巧

2010-01-06 17:12:26

.Net Framew

2024-09-12 17:39:27

2024-04-12 12:14:39

Rust字符串代码

2010-07-26 14:45:17

Perl Hash

2010-07-23 14:12:14

Perl Hash

2024-11-06 17:04:47

AWK编程

2010-07-20 13:02:08

Perl数组

2019-10-29 09:20:48

Python文本正则表达式

2021-09-10 16:30:29

LinuxShell文本

2010-07-26 15:17:51

Perl解析XML文件

2019-10-14 11:31:51

工具代码开发

2010-07-21 10:32:05

Perl函数返回值

2010-07-26 16:23:23

Perl语言

2010-07-26 10:09:01

Perl split函

2024-03-11 00:02:00

tr命令文本处理命令字符

2010-07-26 17:09:00

Perl模块
点赞
收藏

51CTO技术栈公众号