Perl 黑客的自白

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

Opensource.com

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

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

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

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

多年来,我一直是一名系统管理员。只是零零碎碎地做一些,偶尔做一下。没什么严肃的,你明白的——主要是我的系统,我朋友的系统。有时我会管理其他人拥有的系统——甚至在工作中。我总是能控制住它,而且我总是能够抽身出来。有好几个星期——好吧,几天——我根本没有管理过任何系统。除了远程系统,感觉有些不同,不知何故没那么严重。

回想起来,真正让我越陷越深的是 Perl。那是 90 年代——1990 年代,说清楚点——当时 Perl 还很年轻,很自由,甚至没有假装是面向对象的。我们都知道它现在仍然不是,但那些年轻人——他们喜欢假装,而我们这些老家伙,好吧,我们就陪他们玩玩。

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

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

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

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

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

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

User profile image.
我从 1997 年左右开始接触开源,从那时起就一直使用 (GNU) Linux 作为我在家和工作的主要桌面:并非总是那么容易…… 我是一名安全专家和架构师,Enarx 项目的联合创始人,目前是一家初创公司的 CEO,该公司位于

20 条评论

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

你打出这句话时好像这是一件坏事。事实并非如此。这意味着你欣赏一种语言的优雅,这种语言不认为你是白痴,也不觉得有必要像保姆一样管着你,但确实提供了工具,既可以把事情做好,又可以安全地做事。

你想解析日志以查找愚蠢的错误——去吧。

你想构建一个系统,其中变量具有声明的类型——去吧。

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

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

Matthew -

你当然是对的。我感到自豪,我怀念那些编写大量 Perl 代码的日子。它不是所有事情——或所有人——的正确工具,我觉得我的经历可能会引起足够多的人的共鸣,从而引发会心一笑。

Be Perl. Be Proud. (做 Perl,为 Perl 而自豪。)

-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.” 以及产生不正确的代码。正确性是第一位的,完整性是第二位的,效率是第 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.