Perl的-Sx命令行选项的Pythonic等效项是什么?

时间:2018-10-12 23:07:28

标签: python python-3.x python-2.7 perl scripting

我已经完成了将 Perl脚本转换为Python 的任务。

我真的是Perl的新手,并且在遇到命令行选项-Sx时了解了Perl。

Perl中为这些参数提供了很好的文档。但是在python中并没有太多的文档(在Python官方站点中找不到很多信息)。

我的问题是 Perl Python 的那些命令行选项-Sx是否相同?

他们在两者中都完成相同的任务吗?

2 个答案:

答案 0 :(得分:1)

我在评论中提出的问题:

  

您是否考虑过您所要求的外壳对于您的工作是否真的必要?还是您只是在盲目翻译而不了解正在做什么?

我很确定答案分别是“否”和“是”。当您尝试将代码从一种语言翻译为另一种语言时,这不是一个好地方。您应该了解正在做什么,并且使您的新版本以最适合新语言的任何方式进行相同的操作,而不会陷入盲目领先的境地货物邪教代码,您不知道正在发生什么,或者在它始终无法正常工作时如何解决它。

如果您以前从未见过像other question这样的源程序,那么您尝试翻译的源程序就会使您感到困惑。

您有一个Shell脚本,它唯一要做的就是使用一个源代码直接嵌入到Shell脚本中的程序在perl中运行。这样做的原因是要根据环境在同一台计算机上的不同perl安装下运行真实脚本(我个人将perl代码放在其自己的单独文件中,而不是尝试将其直接放在智能文件中。 shell脚本; perlbrew documentation示例采用了这种方法)。那是您需要关注python版本的东西吗?我猜可能不是(如果是的话,请研究使用pythonic的方法来做到这一点,而不是掩盖消失的方法)。这意味着另一个问题的答案

  

您确定甚至-和-x 需要吗?

不,我不认为你这样做。我认为您应该只将其保留为纯python,使这些选项无关紧要。

答案 1 :(得分:0)

以下代码段用于支持早于python存在的古代系统:

#!/bin/sh
exec perl -Sx $0 ${1+"$@"}
   if 0;

现在,it appears您正在使用的是经过混编和修改的版本,但是使用它已无济于事。如果呼叫者想使用特定的perl,则应使用"$PERL" script而不是依靠script来使用$PERL

因此,您应该对Perl脚本使用以下内容:

#!/usr/bin/env perl

#!/path/to/the/installing/perl

因此,您应该对Python脚本使用以下内容:

#!/usr/bin/env python

#!/path/to/the/installing/python