当人们说"Perl非常善于解析"时,人们的意思是什么?

Qui*_*Par 6 scripting perl parsing scripting-language text-parsing

当人们说"Perl非常善于解析"时,人们的意思是什么?

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

Mic*_*man 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从许多其他语言中无耻地借用它一样.)要问哪个更好是没有意义的.用你喜欢的.

  • 虽然有些人来自$ _,但我认为它属于该列表.您有一个"当前主题"或正在处理的事情以及应用各种步骤的想法非常好. (7认同)
  • @Michael:你混淆了DOS的Perl行为以及世界其他地方的行为.在unix机器上读取带有Windows行结尾的文件仍然可以为您提供Windows行结尾.它只是Windows上Perl的一个特殊功能,当Perl知道它写入tty时."\n"的问题是完全不同的问题.有关详细信息,请参阅perlport. (2认同)

bri*_*foy 11

不要将Perl的优势声明作为另一种语言失败的陈述.Perl很适合文本处理,但这并不意味着Ruby或Python很糟糕.

当人们谈论Perl"善于解析"时,他们主要回应Perl的历史; 它是在重型文本处理不容易的那一天发明的.尝试用C或C++做一些(Java还没有发明,也是!).回到白天,拉里试图用sed和awk做他的工作,但遇到他们的局限.他创造了一个工具,使文本更容易使用.

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