为什么Perl是大多数字符串操作任务的最佳选择?

为什么Perl是大多数字符串操作任务的最佳选择?,perl,string,programming-languages,comparison,Perl,String,Programming Languages,Comparison,我听说Perl是字符串操作(和行噪声)的通用语言。有人能提供一些例子和与其他语言的比较来说明原因吗?这是一个非常主观的问题。也许真正的答案是Perl有一个很好的语法(包括regex语法),这让人们想在其他语言中对它给予高度赞扬?依我看,任何支持丰富正则表达式语法的语言在字符串操作方面都非常强大。这是非常主观的,所以我不会说Perl是最佳选择,但它肯定是字符串操作的有效选择。其他替代方案有Tcl、Python、AWK等 我喜欢Perl的功能,因为它对快速正则表达式有极好的支持(比评论中指出的POS

我听说Perl是字符串操作(和行噪声)的通用语言。有人能提供一些例子和与其他语言的比较来说明原因吗?

这是一个非常主观的问题。也许真正的答案是Perl有一个很好的语法(包括regex语法),这让人们想在其他语言中对它给予高度赞扬?依我看,任何支持丰富正则表达式语法的语言在字符串操作方面都非常强大。

这是非常主观的,所以我不会说Perl是最佳选择,但它肯定是字符串操作的有效选择。其他替代方案有Tcl、Python、AWK等

我喜欢Perl的功能,因为它对快速正则表达式有极好的支持(比评论中指出的POSIX更好),而隐式变量使得只需很少的代码就可以轻松完成基本的字符串处理


如果您有*nix的背景,那么您已经知道的很多内容也将应用于Perl,这使得很多人很容易掌握

一开始,Perl是为方便报表处理和处理文本文件而开发的,因此它得到了非常强大的正则表达式支持。您可以在中找到有关正则表达式的大部分信息

现在的孩子们!回到那一天,我们所拥有的只是——我们喜欢它!找个时间试试吧……你永远不知道,当Perl风潮开始时,你可能想要一些值得尊敬的东西作为依靠

Perl被广泛用于字符串操作任务,因为它的字符串操作API易于学习。而且它的正则表达式也被广泛使用。它已经使用了很长时间,任何有Unix背景的人都可以很容易地学会perl。从历史上看,perl是在80年代后期为报表处理任务而开发的,“最初”是为文本处理任务而开发的。所以到目前为止,这一趋势仍在继续,因为任何有字符串操作任务或文本处理任务的人都会选择perl作为第一选择。并非像python这样的其他语言不能胜任这项任务,而是perl在这一领域很受欢迎。

perl->Practical Extraction and Reporting Language

Perl的优势(当涉及到字符串处理时)在于它非常强大

正因为如此,在生物信息学领域有许多人使用Perl作为他们的语言 主要工具,因此大量的帖子。在生物信息学中,他们经常使用字符串,他们称之为“序列”(我对此不太了解)

是Perl社区的核心,请查看大量点击 当你搜索

您不能忽略以下模块的绝对数量:

这非常清楚地表明,在字符串处理方面,Perl是一种非常强大的语言


因此,如果您想进行一些字符串处理,并且您正在使用Perl,那么您已经了解了:)

来解决问题的第二部分:Perl在线条噪音方面的声誉来自4种人:

  • 过于聪明(为了自己的利益)的黑客(有时只是黑客),他们看重聪明和炫耀可读性。“写起来难,读起来也难”不仅仅是一种虚构的态度

  • 如果用棍棒打他们的头,他们就不会知道好的软件开发。例如,人们使用
    $\uu
    而不是命名变量在程序中保存几个字符。在嵌套范围中。或者从未听说过评论。或自记录标识符。或者空白

  • 认为软件开发=代码高尔夫的人。更严重的是,代码中的字符数量越少,可读性就越强,因为他们误解了代码中“简洁”的含义

    (注:前两套并非相互排斥)

  • 使用perl编写代码/进行黑客攻击的人(例如系统管理员),他们几乎没有进行软件开发的培训、经验或动机。例如,使用Perl进行快速、肮脏、风格不好、代码质量差的黑客的比例可能高于Python

    仅供参考,我的$work中80%糟糕的Perl“代码”都属于这一类——它是由财务分析师编写的,他们足够聪明,能够拿起一本Perl书和一些早期的脚本,克隆出一个符合业务需要的脚本,并且不必担心他们的代码的可读性/可维护性

换句话说,您可以用Perl编写漂亮、可读性强且易于维护的软件。这完全取决于谁来写作,他们的重点和技能是什么。而且,就像任何其他语言一样,,你可以把它写得一团糟


与其他语言的不同之处在于,通常情况下,当使用Perl编写时,所述乱码的纯写性确实包含非常高密度的非字母字符(Sygil和写得不好的正则表达式中的特殊字符)。这种高密度确实可以渐近地逼近线噪声。

因为perl就是为它而设计的。因为Perl具有表现力强、功能强大和速度快的特点。我用几分钟内用perl编写的小而脏的脚本击败了许多专业产品。例如,outer join和large join与MySQL(仅仅因为不能合并join)、ETL处理与Java Hadoop(因为我有多年的有效编写经验,perl IO层非常好)等等。我不同意perl是文本处理的最佳语言。简单的事情很容易;要将foo替换为bar:

$data =~ s/foo/bar/g;
然而,困难的事情并不简单。例如,请看。做一些非常简单的事情需要很多代码

Haskell中使用PArrow的类似实现如下所示:

import Text.ParserCombinators.PArrow

data Atom = QuotedString String | Symbol String
          deriving (Show, Eq)

data Sexp = Sexp [Sexp] | Atom Atom
          deriving (Eq)


quotedString :: Char -> Char -> MD a Atom
quotedString quoteChar escapeChar = between q q inside >>^ QuotedString
    where q = char quoteChar
          inside = many $ (char escapeChar >>> anyChar) <+> notChar quoteChar

doubleQuotedString, symbol :: MD a Atom
doubleQuotedString = quotedString '"' '\\'
symbol = word >>^ Symbol

atom, sexp :: MD a Sexp
atom = (doubleQuotedString <+> symbol) >>^ Atom
sexp = atom <+> (between (char '(') (char ')') sexp' >>^ Sexp)
       where sexp' = sepBy1 sexp spaces
import Text.ParserCombinators.PArrow
数据原子=QuotedString字符串|符号字符串
推导(显示,等式)
D