Perl 还是 Python 更适合 Unix 系统自动化?

Perl 还是 Python 更适合 Unix 系统自动化?

我已经使用它完成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,反之亦然)。

相关内容