我听说Perl是字符串操作(和线路噪音)的首选语言.有人可以提供示例和与其他语言的比较,以告诉我为什么?
这是非常主观的,所以我不会说Perl是最好的选择,但它肯定是字符串操作的有效选择.其他替代品是Tcl,Python,AWK等.
我喜欢Perl的功能,因为它对快速正则表达式有很好的支持(比注释中指出的POSIX更好),而隐式变量使得用很少的代码轻松完成基本的字符串运算.
如果您有*nix背景,那么您已经知道的许多内容也将适用于Perl,这使得很多人可以轻松获得.
Perl - >实用提取和报告语言
Perl的强项(当涉及字符串处理时)在于它非常强大的正则表达式引擎.
因此,BioInformatics领域有很多人使用Perl作为他们的主要工具,因此在PerlMonks上有大量关于BioPerl的帖子.在BioInformatics中,他们使用字符串很多,他们称之为"序列"(我对此并不了解).
Perlmonks.org是Perl社区的核心,在您搜索网站时查看大量的点击数:perlmonks.org regex 20,000 hits
您无法忽略CPAN上的大量模块:
命名空间下的375个模块CPAN上的字符串(Perl的模块存储库)
241在Regex命名空间中
156在Regexp命名空间中.
这是非常明确的证据表明Perl在字符串处理方面是一种非常强大的语言.
所以,如果你想做一些字符串处理而你正在使用Perl,你已经覆盖了它:)
为了解决问题的第二部分:Perl的线噪声声誉来自4种人:
非常聪明(对于他们自己的好)黑客(或者有时候只是黑客),他们重视聪明并炫耀可读性."如果写得难以应该难以阅读",这不仅仅是一种神话般的态度.
那些不知道好软件开发的人,如果用cluebat击中他们的头脑.例如,通过使用$_
而不是命名变量来保存程序中的几个字符的人.在嵌套范围内.或者从未听过评论.或自我记录标识符.或者是空白.
认为软件开发==代码高尔夫的人.更严重的是,代码中的字符数越少,它的可读性就越高,因为它们误解了"简洁"在代码中的含义.
(注意:前两组并不相互排斥)
编码/破解perl的人(例如SysAdmins),他们几乎没有进行软件开发的培训,经验或激励.例如,使用Perl进行快速而肮脏的黑客攻击,风格较差,代码质量较差的人比例可能高于Python.
仅供参考,80%可怕的Perl"代码"在我的工作中属于这个 - 它是由财务分析师编写的,他们足够聪明地拿起Perl书和一些早期的脚本,克隆一个执行业务需要的脚本是,并且没有CS /编程背景来担心代码的可读性/可维护性.
在其他(并且不那么讽刺)的话中,你可以在Perl中编写漂亮,易读且易于维护的软件.这一切都取决于谁写作,他们的优先事项和技能是什么.而且,就像使用任何其他语言一样,你可以用它写一个悲惨的只写乱码.
与其他语言的不同之处在于,当在Perl中完成时,所述混乱的唯一性确实包含非常高密度的非字母字符(sygils和编写得不好的RegExes中的特殊字符).这种高密度确实可以渐近地近似线噪声.
因为它是perl制造的.因为Perl具有表现力,强大而快速.我曾多次在perl中编写过多次使用perl的小而脏的脚本的专业产品.例如,外连接和大连接与MySQL(仅因为无法进行合并连接),ETL处理与Java Hadoop(因为我有多年的经验来有效地编写它并且perl IO层很棒)等等.
这是一个非常主观的问题.也许真正的答案是Perl有一个很好的语法(包括正则表达式语法),让人们想要在其他语言上签名高度赞美?恕我直言,任何支持丰富的正则表达式语法的语言在字符串操作方面都会非常强大.