6

人们说“Perl 非常擅长解析”是什么意思?

Perl 如何比 Python 或 Ruby 等其他脚本语言更好或更强大?

4

5 回答 5

19

它们意味着 Perl 最初是为处理文本文件而设计的,并且具有许多使它变得容易的特性:

  • Perl 有许多字符串处理函数:substr, index, chomp, length, grep, sort, reverse, lc, ucfirst, ...
  • Perl 会根据值的使用方式自动在数字和字符串之间进行转换。(例如,您可以从文件中读取字符串 '100' 并添加一个,而无需先将字符串转换为整数)
  • Perl 自动处理与平台编码(例如 Windows 上的 CRLF)和程序中的逻辑换行符(“\n”)之间的转换。
  • 正则表达式被集成到语法中,而不是一个单独的库。
  • Perl 的正则表达式是权力和功能的“黄金标准”。
  • Perl 具有完整的 Unicode 支持。

Python 和 Ruby 也有很好的文本处理工具。(特别是 Ruby 从 Perl 中汲取了很多灵感,就像 Perl 从许多其他语言中无耻地借鉴一样。)问哪个更好是没有意义的。用你喜欢的。

于 2009-12-11T15:57:59.080 回答
11

不要把 Perl 的优点的陈述当作另一种语言的缺点的陈述。Perl 非常适合文本处理,但这并不意味着 Ruby 或 Python 很烂。

当人们谈论 Perl “善于解析”时,他们主要是在呼应 Perl 的历史;它是在繁重的文本处理不容易的时代发明的。尝试用 C 或 C++ 做一些事情(Java 还没有被发明出来!)。过去,Larry 试图使用 sed 和 awk 完成他的工作,但遇到了它们的局限性。他制作了一个工具,使文本更易于使用。

Perl 仍然非常适合文本操作任务,但现在很多其他语言也是如此。

于 2009-12-11T19:17:08.240 回答
4

Perl 也适用于 ETL 或批处理动作。获取文件的代码量最少;推送它split以获取 a map,对记录执行一些逻辑业务操作,然后将其写回磁盘。

我想这是更多的数据处理然后数据解析,但数据处理是批量数据解析。

于 2009-12-11T17:38:07.763 回答
1

与 C/C++/Java 相比,Perl 在文本解析方面非常出色。

于 2009-12-11T14:55:20.523 回答
0

这可能是因为人们已经习惯了它的构建目的,如perl 文档中所述,因此许多人将文本文件的解析与 Perl 相关联已变得司空见惯。不排除 Ruby 或 Python,恕我直言,它只是一个家喻户晓的名字。

Perl 是一种针对扫描任意文本文件、从这些文本文件中提取信息以及基于该信息打印报告而优化的语言。它也是许多系统管理任务的好语言。该语言旨在实用(易于使用、高效、完整)而不是美观(小巧、优雅、最小)。

于 2009-12-12T01:33:17.447 回答