Perl进入牛津英文字典
取自 PerlChina.org - wiki
- 翻 译:climby
- 审 校:hoowa
- 出 处:中国 Perl 协会 FPC - PerlChina.org
- 原 名:Perl Enters the Oxford English Dictionary
- 中 文:Perl进入牛津英文字典
- 作 者:Howard Wen
- 原 文:http://www.oreillynet.com/pub/a/oreilly/perl/news/oxford_0900.html
- 发 表:2000-01-09
- Perlchina 提醒您:请保护作者的著作权,维护作者劳动的结晶。
Perl 在著名的牛津英文字典的编辑过程中举足轻重。牛津大学出版社,牛津大学出版牛津英文字典的分支机构,已经使用 Perl 数年了。他们对 Perl 的使用范围涵盖从排版前文字的准备到英文和其他语言的语法分析器的生成。“我们发现它(Perl)作为一种编程语言的强大和易于掌握”。英国一名牛津英文字典的主要程序员 Dan Barker 这么说。
在位于北美的字典办公室,Perl 被作为一个新手的工具来使用。康陧狄格的牛津英文字典北美编辑小组的主编 Jesse Sheidlower 说:“我不是一个程序员,我只是一名字典编辑人员,虽然如此,我能够在短时间内学习足够的 Perl 知识,将其作为极其有用的开发工具。”这是一个新的办公室,当时正由 Sheidlower 亲手组建,所以当时他缺少各种资源,包括正式的程序员。
Jesse Sheidlower, 牛津英文字典编辑和他常用的参考书
大不列颠的字典员工在内部使用 Perl 来完成 SGML 兼容的标记文本。它相对 DTD 来说语法更加明晰,此外也适合向 HTML 转化。“尽管字典文本使用了内嵌标记格式,由于种种原因,它不完全兼容 SGML”,Barker 说,“而且这些是多年以前为编辑人员使用而设计的标记,没有包含任何网页发布的概念”。
在一个长的时期内,他和他的员工发现 Perl 更擅长处理标记元素内容。相比之下,通常的 SGML 工具更擅长处理标记元素本身。
“我们需要程序来简化 SGML 标记,现在我们拥有一套应用程序(Perl 和非 Perl 的)来扮演这个角色”他说。相反,Perl 天生对 SGML 的“无知”(是指在没有 SGML 库的前提下 Perl 对 SGML 的了解程度)对于达到这个目的非常有帮助。“我们使用一种明白 SGML 的转化工具同 Perl 一起协作”。Barker 说。“但是对于处理那些不符合 DTD 语法处的文本,能将其处理为文本流而非预定义的标记是非常有必要的。”
对于 Sheidlower 来说,Perl 的易于上手使他能够完成主要的任务。而且 CGI.pm 是他所使用不可获缺的 Perl 模块。“牛津英文字典是一个巨大的基于文本的文件,而 Perl 特别适合处理文本。他们是一个理想的搭配。”他说。“Perl 处理我们需要操作的所有东西完全没有问题,而且由于它特别容易使用,我们可以更快的做事而不必耗费数月来开发工具。事实上,它相当棒!”
字典和它的编纂工具都是基于 SGML 的。部分编纂过程需要一个阅读程序,世界各地的志愿者阅读各种字典的文本,并将有可能收录在本字典中单词的感兴趣的和建议的用法发送给编辑。
阅读程序的数据库是基于 SGML 的,志愿者做任何阅读都要完成解码才行。“由于一个单词有上百个标记和上千个字符实体指向对这个单词的各种说明、历史、参考等等,这才是正真拖后腿的地方,但是又不能缺少。”Sheidlower 说。
在过去,牛津英文字典的编辑人员需要打字员输入所有的文本并正确标记它。但这是一项费时费力的工程。后来,编辑人员在 Microsoft Word 中建立了一个基本模板来帮助志愿者输入他们的信息。然而,用 Sheidlower 的话说,志愿者仍然需要处理碍眼的 SGML 标记。而且为了有效使用模板,志愿者仍然需要学习好几百页的说明文档。许多志愿者不希望做这些。
为了解决这些问题,Sheidlower 用 Perl 写了一个程序,在网页上运行这个阅读程序。字典里面所有基本字段都可以填写,志愿阅读者可以用非常易于使用的方式进行引用。这个程序生成正确编码的 SGML 文件。“这样就给我们的阅读者一种舒服的方式来输入他们的资料,而且我们保证格式完美的文件,没有弄错的标记”Sheidlower 说。
总之,对他来说 Perl 不仅仅节约了时间。“如果当时我花高薪聘请一个外面的程序员,这些创意就不会实现。但(若使用了Perl),我可以自己就可以完成它,节约了大量时间、金钱、和争论,同时使我们将精力集中在分析文本的目标上,而不是在调试程序上,这让所有的都不一样了。”
题外话:可以通过阅读 Category:Perl 成功故事 来学习 Perl 在日常工作中的应用有多少。

