几年前我进入了Perl,并且总是发现它是一种有趣且富有表现力的语言。
我发现Perl中的编程使我的工作效率很高,这要归功于其低开销以及针对CPAN常见问题的大量现成解决方案。
如果你是Perl的新手,是什么让你进入它?
答案 0 :(得分:18)
我正在编写PHP以求生存,然后听说他们从::更改为名称空间分隔符。我真的不是在开玩笑或者是恶意的,但那是真的让球滚动的原因。
不是精英主义者,但我突然意识到我必须与谁合作的人知道PHP对编程概念的理解很少,这让我感到很沮丧,因为他们如此盲目,IRC会议室里的人都是不再是我的问题的帮助来源,我通常花更多的时间回答问题,等待有人找到可以回答我的问题。通常我自己最终解决了。 大多数时候我意识到人们在越来越糟糕的情况下一遍又一遍地重新解决同样的问题。
我在PHP中发现了有问题的行为,这些行为违背了逻辑和推理(比如array_merge_recursive系列),发现了如何使用它们没有记录的函数,当我报告函数中的错误时,我的bug被标记为“Bogus” “我被期待成为通灵者。
我有一个朋友,他一直在宣称Perl的善良,所以我基本上给了它一个机会,现在我像一个上瘾者一样迷上了。
此外,我在其他高阶动态类型语言(JavaScript和Ruby,是的,JavaScript在语言功能方面是比PHP更强大的语言)方面的经验让我掌握了很多方法来轻松解决问题类型,但是以这种方式受到限制我无法使用这些强大的功能。 Perl满足了这个需求。
为什么是Perl而不是Ruby?我曾经玩过Ruby,但是我的经验告诉我,支持和文档很少,语言很慢而且不成熟。它可能很好,但是从我看到的它对Perl的能力仍然有所下降。 并且它共享了PHP的主要缺陷,它拥有庞大的用户群,包括所有以错误方式做事的新手,而且我真的不想那么多处理。
成为精英主义者并不好,但是一旦你试图向30个人解释同样的事情(每次花费一个小时让一个简单的概念进入他们的头脑中),它就会达到挫折感。 (我无法应对'互联网上有人有错'的情况,如果我不能 SEE 它,它就不会发生)
答案 1 :(得分:11)
作为“脚本语言”课程的一部分,我在计算机科学的第三年开始学习Perl。我有一个研究生物技术的朋友,我帮助她处理蛋白质数据库(解析文本文件,正则表达式,简单完整性检查)的一些数据挖掘脚本。在Perl中做这一切都很自然。
然后我得到了我的第一份兼职工作,不得不专业地使用它。我负责开发处理公司中某些业务逻辑部分的批处理脚本。这是Perl透露其所有潜力的任务。需要从DB获取数据? - 没问题,只需去CPAN。需要自动化维基 - 没问题,请转到CPAN。已经创建的模块的数量是压倒性的,您可以确定您将始终在CPAN中找到所需的内容。
总结一下。对我来说,Perl是一种脚本语言的瑞士军刀。一切都可以完成,即使是非常奇特的任务,它也有大量的附加模块。顺便说一句,我提到了REGEXPS吗?
答案 2 :(得分:9)
我在Perl社区的时间还不长,我最初带来的是Larry Wall的幽默和智慧。是的,Perl有它的怪癖,但语言来自对我非常接近的事物的理解,所以我对Python不太熟悉,而在较小程度上Ruby。
我没有使用WxPerl进行Web应用程序的更多GUI,它运行得很好。我对语言也非常感兴趣,比如因素,boo,rebol等等,但总的来说Perl是我的选择。这是因为强大的语法(如果你喜欢它可以非常实用),社区,CPAN当然,以及我之前说的,由于舒适的感觉在正确的地方。
答案 3 :(得分:9)
借助Perl(以及TMTOWTDI背后的表现力),编程成为一项创造性的任务。如果我计划发表许多其他陈述,我可以写if($expr) { $statement; }
,或者如果更有意义,我可以写$statement if $expr;
(例如,我喜欢写作:
sub doSomething {
my($toObject, $argument) = @_;
die "No object specified" unless defined($toObject);
die "Object invalid: $toObject" unless $toObject->ISA('Example');
# Do stuff
}
但当然,这并不总是最简单,最具表现力的方式;所以我想出了一个更好的方法来完成手头的任务!)。人们抱怨因为Perl让你写出可怕的代码;我喜欢Perl,因为它让我编写的代码看起来很漂亮给我(是的,我可以看到让十几个不同的程序员以他们自己的风格写作的缺点;我会坚持认为无论主题有多么不同,优秀的作家都可以表达得体,也可以理解。
使用其他编程语言,我最终不得不通过抽象层思考问题(这个Map
将如何给我Collection
的{{1}}我可以使用...等等)。使用Perl,我通常只有一个高于基本Perl的抽象级别。例如,Iterator
将给我数据库结果作为普通的日常Perl标量,列表和散列,所以我所知道的关于这些简单的核心数据结构的所有内容都会延伸到我将DBI
放到的每个任务中。数据结构?这就是PostgreSQL的用途!)。
我只使用Perl全职工作大约一年,但这些对我来说是一大胜利,也是我在Java 1.4受到一年苦难之后第一次全职进入Perl的原因收藏模型(不要问)。其他编程语言让我觉得我正在拼凑一个拼图游戏,因为你排列所有模块和包恰到好处; Perl感觉像一个装满乐高积木的盒子,有一些“特殊”砖块(如DBI
,DBI
和CGI.pm
)被扔进去。有很多不同的方法可以解决任何问题,Perl允许你以任何你喜欢的方式尝试任何你喜欢的方法。
答案 4 :(得分:6)
Perl是它的社区,这是在社交和实践层面上使用它的原因。 (参见CPAN和Perlmonks,这可能激发了SO。)
答案 5 :(得分:6)
在Perl编码时有很多自由;你可以写一些邪恶疯狂的不可读的黑客,但是一旦你对这种语言有了一种感觉(并学会了如何使用perltidy :-)),你才能意识到写得好的perl代码看起来很彻底漂亮。
这很有趣;在为大学的系统管理员工作学习之后,我最终成为了一名全职Perl程序员;现在这是我最强的技能。我会坚持使用Perl一段时间,因为到目前为止,语言已经变得多才多艺,与我一起成长。我在Perl中编写了很多系统软件,并决定选择Web编程以获得乐趣,而Catalyst则在那里等着我。我想尝试一种新的语言范式吗? Perl可能会支持它。相比之下,当我用PHP编写一段时间时,我立刻觉得我正在按压玻璃天花板。
答案 6 :(得分:5)
我是俄亥俄州南部一个大型组织的技术故障排除员。我不得不学习Perl以保持一些自动化网络文本操作系统的运行并最终对此感到有些兴奋。我最终认为自己是一名开发人员并编写了一些程序来解析一些数据库数据并使一些人的生活变得更容易。但是在阅读了本网站上的一些帖子并听取了stackoverflow播客之后,甚至开始从某人建议的阅读列表中阅读“代码完成”一书后,我不再有任何妄想,因为我是Perl的开发者或任何其他语言。但是,也许有一天我可以。
答案 7 :(得分:4)
简单的语法,强大的win32和unix系统脚本编写功能,以及功能强大的正则表达式!
我在第一份工作中选择了Perl,我必须为电气工程师编写大量自动化脚本来挖掘数据目录并将其格式化为Excel,有时也处理sql server。有了Perl,我通常可以很快地得到一些工作,所以在制造领域一切都很好。 :P
答案 8 :(得分:4)
我曾经使用过awk一段时间来处理shell脚本的方式。在一个古老的项目中,我们需要实现一个TELNET协议连接,所以我在Perl 4中编写了一个快速版本。它工作得很好,我开始非常喜欢这种语言。
后来,我在Perl 5中编写了一个完整的商业Web应用程序,并附带了自己的框架和数据库。我小心翼翼地不使用Perl的许多更深奥的功能,因此代码看起来更像C而不是Perl。它工作得很好,性能很好,代码很容易扩展。
最近我一直在使用Java,但我经常发现自己错过了Perl的松散类型,并且它能够比Java更好地封装内容。我最喜欢的功能是能够将Perl数据结构(数组和散列)和代码直接放在配置文件中并执行它们,以及将代码绑定到类似数组的语法的能力。两者都导致一些非常光滑的代码。
保罗。
答案 9 :(得分:2)
我开始使用Perl作为嵌入式开发构建过程的增强功能。我们需要根据交叉编译的有效负载开发各种输出,Perl非常适合。
我们的增强功能包括浮点到十六进制转换,S记录后处理和校验和修改。
并非使用许多其他工具无法完成此类工作,但我肯定会建议将Perl用于与构建相关的工作。
答案 10 :(得分:1)
当我看到DBI并意识到我可以在五分之一的时间内编写我当时正在编写的ESQL / C程序时,带我到Perl的是什么。
让我使用Perl的原因是,其他两种可能取代它的语言都是强类型的。那是
print "10" + 5;
是类型错误,而不是15。
答案 11 :(得分:0)
我不接受它。几年前我不得不在Perl的一个项目上工作,我真的不喜欢这种语言。它有一种有时笨拙的语法和很多我发现难以使用的疯狂陷阱。老实说,我认为Ruby在许多方面都取代了Perl:它在大致相同的东西上表现出色,但功能更好,更易于使用。
Perl仍然有CPAN,甚至Ruby都无法比拟(尽管Ruby也有很多有用的库)。
答案 12 :(得分:0)
去年我考虑过学习Perl。
这是我积极决定不学习的唯一技术。这没有什么直接反对语言本身,似乎我将来晚10年来参加聚会。它对于它设计的shell脚本任务非常有用,但就我个人而言,我更喜欢具有更强一致性的语言。
Perl 6似乎无限期中断,即使它到了,我也不相信它会让语言更加引人注目。
此外,拉里沃尔吓到了我。
对于我的情况Perl不是正确的选择,这就是原因。
答案 13 :(得分:-3)
Perl没有我想象的那么糟糕。我曾经在一年前的几个客户脚本中使用它,甚至有点喜欢它。再说一次,我从来没有错过它。
原因?它主要是一种只写语言。超过100行解决方案使我对自己的代码保持警惕,这肯定不是一个好结果。对于其他语言,条形相当高(可能是1000或10000行)。
我认为没有理由在新项目中为新用户申请Perl,在2009年 - 。