我已经使用它完成bash
了大部分系统管理任务。我还了解一点 perl。
我应该学习 Python
还是Perl
更适合系统自动化。到目前为止,从我的经验来看,学习 perl 很容易。
答案1
简短的回答是:两者皆学。
作为系统管理员,您将会遇到这两种情况,因此您需要知道如何阅读/排除故障/调试这两种情况。
至于编写脚本,过去 10 年,我大部分系统管理实用程序和“胶水”脚本都是用 Perl 编写的。它的正则表达式语法非常简单,非常适合极快的脚本开发。当你需要即时完成某项工作时,这一点非常重要。
最近我一直在努力更多地使用 Python,原因如下:
编写优秀的 Perl 需要很多纪律。很多时候,“草率”的脚本会随着时间的推移逐渐添加更多功能,但仍然以仓促的方式实现。不久之后,您就会得到一个包含大量行噪音的庞大文件,维护起来非常麻烦。
与 Python 相比,用 Perl 编写 OO(甚至是可重用)代码并不容易。相信我,从长远来看,您需要大量可重用的代码(而不是剪切粘贴!)
与 Perl 的 TMTOWTDI 原则相比,Python 的原则 (
import this
) 更适合与他人协作。如果您曾经阅读过其他人的 Perl,您可能知道解开它可能是最令人沮丧的事情。由于其设计,Python 的这种不可读性问题要小得多。更糟糕的是,当您多年后遇到自己的 Perl 时。您会想知道自己一定是在什么时候昏了过去。如果您的代码要存在一段时间,那么记录就很重要。用 Python 编写文档字符串比用 Perl 编写 pod 标记容易得多。简单到您实际上可能会使用它。
我仍然经常使用 Perl,但现在它更适合单行代码和只运行一次的“一次性”脚本。如果我认为我需要再次编辑脚本,我会考虑使用 Python。
答案2
这取决于您要做什么以及在哪里做。如果所有条件都相同,并且您的环境不受任何限制,您可以安装任何您想要的东西,并且不必担心与遗留代码的互操作,请随意选择最适合您个人喜好的语言。
尽管如此,对于系统管理员的工作,我确实认为 Perl 有优势:它安装在开箱即用的所有设备上,并且自古以来一直如此。如果您正在编写系统自动化或管理脚本并且只使用核心 Perl 模块,您几乎可以肯定它将无需修改即可在异构 UNIX 环境中的任何地方运行,并且可以通过安装 ActiveState 或 Strawberry Perl 相当轻松地扩展到 Windows。
希望有帮助!
答案3
我推荐使用 Python。我对 Perl 了解很多,但不是专家,而且我对 Python 的了解非常丰富。我认为这取决于您的需求,但如果只是为了系统自动化,我会选择 Python 路线,暂时忘掉 Perl。
这是一个让你深入思考的好方法:
http://diveintopython.org/toc/index.html
随着 Fabric 等产品的开发,事情确实变得更容易:
http://docs.fabfile.org/en/1.0.0/index.html
页面示例:
from fabric.api import run
def host_type():
run('uname -s')
输出
$ fab -H localhost,linuxbox host_type
[localhost] run: uname -s
[localhost] out: Darwin
[linuxbox] run: uname -s
[linuxbox] out: Linux
Done.
Disconnecting from localhost... done.
Disconnecting from linuxbox... done.
答案4
它们是等效的;对于家用机器,使用哪个取决于您觉得哪个更舒服,但是在与他人合作时,您应该遵守任何既定的标准(如果其他人都使用 Python,那么您不应该无缘无故地使用 Perl,反之亦然)。