Perl 黑客戒断自白

许多人都发现,Perl 的诱惑难以抗拒。
304 位读者喜欢这篇文章。
Avoiding data disasters with Sanoid

Opensource.com

我叫 MikeCamel,我是一名 Perl 黑客。

好了,我说出来了。这是第一步。

我在 IRC、Twitter 以及世界上几乎所有其他地方的用户名都是“MikeCamel”。 这是因为,在很久以前,当没有聊天应用——实际上根本没有应用的时候——我身处一个技术“聊天室”,而“Mike”这个名字已经被占用了。 我环顾四周,注意到桌子上最显眼的东西是骆驼书,O'Reilly Perl 圣经。

我现在有第二版,但这是第一版。 昨天,我碰巧拿起第二版,也就是真正厚的那一本,在视频会议通话中给某人看,结果发现上面有一层薄薄的灰尘。 我有点惭愧,但也有点如释重负。

多年来,我一直是一名系统管理员。 只是零零散散,偶尔为之。 你明白的——主要是我的系统,我朋友的系统。 有时我会管理其他人——甚至是在工作中——拥有的系统。 我总是能掌控局面,而且我总是能够抽身而退。 有整整几周——好吧,几天——我根本没有管理过任何系统。 除了远程系统,感觉有些不同,不知何故不那么严肃。

反思之后,真正让我沉迷的是 Perl。 那是 90 年代——1990 年代,说清楚点——那时 Perl 还很年轻,很自由,甚至不假装是面向对象的。 我们都知道它现在仍然不是,但那些年轻人——他们喜欢假装,而我们这些老手,好吧,我们就陪他们演戏。

关于 Perl,问题在于它总是从小处开始,这里一个正则表达式,那里一个文本文件行计数器。 这些事情用 Bash 或 Sed 或 Awk 完全可以轻松管理。 但是,一旦你编写了几个脚本,你就深陷其中——没有回头路了。 长期的 Perl 用户记得我们是如何开始的,我们也看到了新手们走着同样的路。

我自学 Perl 是为了从五个不同的 FoxPro 数据库中整理静态网页。 我从骆驼书的开头开始,尽可能多地阅读,直到我的大脑开始疼痛,然后从前面几页捡起来继续阅读。 然后编写一些 Perl,总是失败,主要是因为一开始缺少分号,然后是因为我真的不太理解我在做什么。 但我坚持了下来,直到我不仅编写脚本来整理数据库,还编写脚本将数据加载到单个数据库中,并使用 CGI 实时提供页面。 我的妻子知道,我的一些同事也知道,但我不认为他们完全理解我陷得有多深。

当您开始寻找可以用 Perl 自动化的管理任务时,您就知道 Perl 已经缠上您了。 那些不需要自动化,而且如果您手动执行会快得多的任务。 当您开始在网上搜寻三到四个字符的命令时,这些命令在执行时可以并行地对三个单独的文件进行排序、拼写检查和解密,并将它们 ROT13 编码后输出到 STDERR。

我很幸运:我及时逃脱了。 我一直坚持为我的 Perl 添加注释。 我从来没有完整地读完骆驼书。 至少没有一次性读完。 我从来没有尝试过更黑暗的副作用; 每行三到四个单独的操作对我来说总是足够了。 随着时间的推移,随着我的职责更多地转向编程,我减少了系统管理任务。 当然,这并没有完全阻止 Perl 的使用——令人惊讶的是,您能找到多少借口来自动化任务,以及 Perl 有多经常是答案。 但它将我的 Perl 使用量减少到了可管理的水平,不会影响我的日常功能的水平。

我想假装我已经停止了,但你永远无法真正放弃 Perl,Perl 也永远不会放弃你。
我想假装我已经停止了,但你永远无法真正放弃 Perl,Perl 也永远不会放弃你。 我的骆驼书(第二版)仍然还在,即使它有点积灰。 我总是检查核心模块是否安装在我运行的任何系统上。 大约五个月前,我发现我 10 岁的女儿有一些数学作业,可以通过暴力破解来解决。 只是几行代码。 几个循环。 仅此而已。 并没有超出范围。

在她交上结果后,我发现它并没有产生正确的结果,但我并不在意。 它很紧凑,很优雅,很漂亮。 它是 Perl。 我的 Perl。

User profile image.
自 1997 年左右以来,我一直身处开源领域,并且从那时起一直在家庭和工作中将 (GNU) Linux 作为我的主要桌面系统:并非总是容易...... 我是一名安全专家和架构师,Enarx 项目的联合创始人,目前是一家初创公司的 CEO,该公司位于

20 条评论

“我叫 MikeCamel,我是一名 Perl 黑客。”

你打出这句话时,好像这是一件坏事。 它不是。 这意味着您欣赏一种语言的优雅,这种语言不认为您是笨蛋,也不觉得有必要像保姆一样管着您,但确实提供了工具,既可以完成任务,又可以安全地完成任务。

您想解析日志以查找愚蠢的错误 - 请便。

您想构建一个具有变量声明类型的系统 - 请便。

正如我们所说,一把瑞士军刀链锯。 无需工具切换的认知失调。

我叫 Matthew Persico (CPAN 上是 PERSICOM)。 我是一名 Perl 黑客。 布-亚!

Matthew -

您当然是对的。 我很自豪,并且怀念那些我写过大量 Perl 代码的日子。 它不是适用于所有事物或所有人的正确工具——而且我觉得我的经历可能会引起足够多的人的共鸣,从而引起一丝苦笑。

Be Perl。Be Proud。

-Mike。

回复 作者 Matthew Persico (未验证)

您不介意得到错误的结果? 那不是 Perl 的错。 我不会称之为紧凑、优雅或漂亮。 但我从松散、丑陋但能做对事的代码开始,然后再使其紧凑。

但是,如果您需要帮助,您可以随时在 Stackoverflow 上提问,社区会为您提供帮助。

而且,第四版才是厚的那本:几乎是第二版的两倍厚。 那是可以撑开沉重的大门或砸断脚趾的那一本。 我在《Programming Perl 20 年》中比较了所有四个版本的物理特性。

Brian -

_当然_我在意结果的正确性。 我使用幽默作为情感拐杖,主要是因为我是英国人。 这部分是在感叹我现在写的 Perl 代码太少了,以至于我甚至写不好它了。 :-(

我知道我可以问别人,但我在一家没有互联网连接的咖啡馆里花了半个小时就写完了!

我非常喜欢这篇文章,并计划将其推荐给其他人。 如果我们要说服其他人计算机科学是一门科学,那么我们就需要更多这种基于证据的写作。

-Mike。

回复 作者 brian d foy (未验证)

即使是现代精神保健也很难帮助人们从 Perl 编程中完全康复。

这甚至比 BASIC 还糟糕。

我对 Perl 的体验恰恰相反——我研究了它,我尝试用它做一些事情,结果吓得退缩了。 从那以后,我一直无法触碰它。 我一定是哪里出了问题。

有些人会说你没有任何问题:可能是 Perl 本身有问题……

回复 作者 KWL (未验证)

不要独自参与这场战斗。 加入当地的 PHA 小组。

在 PHA 小组的匿名氛围中分享经验和挣扎
已经帮助了很多陷入同样陷阱的人。

无限步骤计划(不止一种方法可以做到这一点)
可能会以一种非常非结构化的方式帮助您康复。

谢谢。 我觉得我已经迈出了第一步:承认我有一个问题。

回复 作者 Carol Fenijn (未验证)

这听起来很严重:“Be Perl。Be Proud。” 以及生成不正确的代码。 正确性是第 0 位,完整性是第 1 位,效率是第 N 位,N 的值取决于手头的任务。

回复 作者 MikeCamel

我并不是说它不正确:只是它没有提供我女儿老师期望的结果。

好吧:它是错误的。

回复 作者 CF

只要您不告诉您的女儿,她的老师应该提供一个更合适的作业,与您的代码相匹配,那么您的状况就还不错。 您还是有康复的希望的。

回复 作者 MikeCamel

你很幸运。 当我开始编写 Perl 代码时,我们甚至没有*书*。 :)

多年来,能够骑骆驼和骆马一直是一次很棒的体验。 难怪最终有这么多人加入了 PHA。

回复 作者 Randal L. Schwartz (未验证)

我绝对热爱 Perl,并且永远热爱它。 我无法停止用它编写代码,因为它具有强大的功能和优雅性——它比所有那些臃肿、简化的编程语言简洁得多。

ScottyProg - 加油! 我仍然非常喜欢 Perl,它在写得好的时候确实很优雅。

哦,感谢上帝,还有其他人像我一样离不开 Perl。 虽然,我是一个不熟练的假装的前操作员——我仍然求助于 Perl 来处理我的税务和赌博^H^H^H^H^H 市场投机中的数字处理。

干杯 TIMTOWTDI

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.