我叫 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 也永远不会放弃你。 我的骆驼书(第二版)仍然还在,即使它有点积灰。 我总是检查核心模块是否安装在我运行的任何系统上。 大约五个月前,我发现我 10 岁的女儿有一些数学作业,可以通过暴力破解来解决。 只是几行代码。 几个循环。 仅此而已。 并没有超出范围。在她交上结果后,我发现它并没有产生正确的结果,但我并不在意。 它很紧凑,很优雅,很漂亮。 它是 Perl。 我的 Perl。
20 条评论