我多年前开始接触Perl,一直觉得这是一种有趣且表达能力强的编程语言。
我发现使用Perl编程可以提高我的生产力,这是由于它的开销很低,并且在CPAN上有大量现成的解决方案可供使用。
如果你是Perl新手,是什么吸引了你尝试它呢?
我多年前开始接触Perl,一直觉得这是一种有趣且表达能力强的编程语言。
我发现使用Perl编程可以提高我的生产力,这是由于它的开销很低,并且在CPAN上有大量现成的解决方案可供使用。
如果你是Perl新手,是什么吸引了你尝试它呢?
我曾经靠写PHP谋生,后来听说他们将名称空间分隔符从::改成\。我并不是在开玩笑或者出于恶意,但这确实是让我开始转向Perl的原因。
并不是自命不凡,但我突然意识到,我需要与合作的懂PHP的人在编程概念上理解很少,这让我非常沮丧,IRC聊天室里的人已经不再是我的问题解决来源,我通常花费更多的时间回答别人的问题等待有人能够回答我的问题。通常我最终还是自己解决了问题。大多数情况下,我发现人们反复解决同样的问题,而且方法越来越糟糕。
我发现PHP中存在一些问题行为,这些行为违反了逻辑和推理(例如array_merge_recursive系列),并且发现某些函数的使用方法未经记录,当我报告函数中的错误时,我的错误被标记为“虚假”,并且人们期望我能够看穿未来。
我有一个朋友不断宣扬Perl的优点,所以我基本上给它一个机会,现在我就像一个瘾君子沉迷其中。
此外,我在其他高阶动态类型语言(JavaScript和Ruby,是的,JavaScript在语言功能方面比PHP更强大)中的经验使我对许多解决问题的方法有了了解,但被限制在这样的方式下,我没有办法使用这些强大的特性。Perl满足了这个需求。
为什么选择Perl而不是Ruby?我玩过Ruby一段时间,但我的经验告诉我,支持和文档稀缺,语言速度慢且不成熟。它可能很好,但从我看到的情况来看,与Perl相比容量仍然较小。并且它与PHP共享一个主要缺陷,即拥有许多完全不知所措的初学者用户,所有人都用错误的方式完成操作,我真的不想太多地处理这个问题。
成为精英主义者并不好,但是当你尝试向30个人解释相同的事情(每次花费一个小时将简单的概念灌输到他们的头脑中)时,会达到一种沮丧的程度。(我无法应对“互联网上有人是错误的”这种情况,如果我看不到它,那么它就不存在)
我在攻读计算机科学专业的第三年开始接触Perl,是在“脚本语言”课程中学习的。我有一个学生朋友在学习生物技术,我帮她开发了一些数据挖掘脚本,用于处理蛋白质数据库(解析文本文件、正则表达式、简单完整性检查),这些都在Perl中非常自然地完成。
后来我得到了第一份兼职工作,需要专业使用它。我负责开发一组批处理脚本,用于处理公司业务逻辑的某些部分,而这正是Perl展现出全部潜力的任务所在。需要从数据库获取数据?没问题,只需去CPAN找。需要自动化维基百科?没问题,去CPAN找。已经创建的模块数量是惊人的,你可以放心,无论什么需求,你都能在CPAN中找到需要的东西。
总结一下,对我而言,Perl是脚本语言中的瑞士军刀。几乎所有的任务都可以在其中完成,并且即使是非常特殊的任务,也有众多附加模块可供使用。顺便提一句,我有提到过正则表达式吗?
我在 Perl 社区里的时间并不长,而最初吸引我的是 Larry Wall 的幽默和智慧。诚然,Perl 有它的怪癖,但这门语言来自对事物的理解十分贴近我的观点,所以我对 Python 不太熟悉,Ruby 稍微好一些。
我不做 Web 应用程序,更多地使用 WxPerl 开发 GUI,而且效果很好。我对语言非常感兴趣,包括像 factor、boo、rebol 等较不知名的语言,但总体来说,Perl 是我的首选。因为它具备强大的语法(如果你喜欢,它可以非常函数化),社区也十分活跃,当然还有 CPAN。就像之前说过的那样,Perl 让我有一种舒适感,让我觉得自己在正确的位置上。
使用Perl(以及TMTOWTDI背后的表达能力),编程变成了一项创造性的任务。如果我打算有许多else语句,我可以写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
,它们的Iterator
我可以用来...等等)。而使用Perl,我通常只需要在基本Perl的抽象级别上再加一层。例如,DBI
会将数据库结果作为普通的、日常的Perl标量、列表和哈希返回,因此我对这些简单的核心数据结构的所有了解都适用于我使用DBI
的每个任务(复杂的数据结构?那就是PostgreSQL的工作!)。
我只用Perl全职工作了一年左右,但这些是我取得的重大胜利,也是我在Java 1.4的集合模型(别问我为什么)折磨了一年后首次全职转向Perl的原因。其他编程语言让我感觉像是在拼图,你必须把所有的模块和包排成刚刚好的样子;Perl就像一个装满乐高积木的盒子,还有一些“特殊”的积木(比如DBI
、CGI.pm
和Test::*
)加入其中。解决任何问题的方法有很多种,Perl可以让你尝试任何一种,并以任何你喜欢的方式尝试。
Perl就是它的社区,这也是人们在社交和实际层面上使用它的原因。(请看CPAN和Perlmonks网站,这两个网站可能启发了Stack Overflow。)
我在俄亥俄州南部的一家大型组织中担任技术故障排除员。我不得不学习Perl来保持一些自动化网络文本操作系统的运行,并最终对它产生了一些兴趣。我最终认为自己是一名开发人员,并编写了一些程序来解析一些数据库数据,使一些人的生活变得更加轻松。但是,在阅读了这个网站上的一些帖子并听取了stackoverflow播客甚至开始阅读某人推荐的阅读列表中的Code Complete一书之后,我不再有任何幻想,认为我是Perl或任何其他语言的开发人员。然而,也许有一天我可以成为一个开发者。
我曾经在很久以前的shell脚本中使用过awk几次。在一个古老的项目中,我们需要实现TELNET协议连接,于是我用Perl 4快速编写了一个版本。它运行得非常好,我开始真正喜欢这种语言。
后来,我用Perl 5编写了一个完整的商业Web应用程序,包括自己的框架和数据库。我小心翼翼地不使用太多Perl的奇特功能,所以代码看起来更像C而不是Perl。它运行得非常好,性能也很好,代码也很容易扩展。
最近我一直在用Java,但我经常发现自己想念Perl的松散类型和比Java更好的封装能力。我最喜欢的功能是能够直接在配置文件中放置Perl数据结构(数组和哈希表)和代码并执行它们,以及将代码与语法(如数组)绑定。两者都可以产生非常流畅的代码。
保罗
我开始使用Perl作为嵌入式开发构建过程的增强工具。我们需要根据我们的交叉编译负载开发多样化的输出,而Perl非常适合这个任务。
我们的增强包括浮点数转十六进制、S-record后处理和校验和修改。
虽然这种工作也可以使用许多其他工具完成,但我肯定会推荐Perl用于构建相关工作。