Каков Pythonic-эквивалент параметров командной строки Perl -Sx? - PullRequest
0 голосов
/ 13 октября 2018

Мне дано задание преобразовать скрипт Perl в Python .

Я действительно новичок в Perl и понимаю его, когда наткнулся на параметр командной строки, который -Sx.

В Perl есть хорошая документация для этих параметров.Но в python нет большой документации по этому поводу (не нашел много информации на официальном сайте Python).

Мой вопрос: эти параметры командной строки -Sx одинаковы для обоих Perl и Python ?

Они выполняют одну и ту же задачу в обоих?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Следующий фрагмент используется для поддержки древних систем, существовавших до существования python:

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

Теперь, Похоже , что вы имеете дело с убитой и измененной версией, но нет больше смысла использовать это.Если вызывающий хочет использовать определенный 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
0 голосов
/ 13 октября 2018

Вопросы, которые я задал в комментарии:

Задумывались ли вы, действительно ли тот кусок оболочки, о котором вы спрашивали, действительно необходим для того, что вы делаете?Или вы просто пытаетесь слепо переводить, не понимая, что делают?

Я почти уверен, что ответы нет и да соответственно.Это не очень хорошее место, когда вы пытаетесь перевести код с одного языка на другой;вы должны понимать , что происходит в оригинале, и заставлять вашу новую версию делать то же самое любым способом, наиболее подходящим для нового языка, и не быть пойманным в ловушку для слепых, ведущих слепых.культовый код, в котором вы не знаете, что происходит или как его исправить, когда он неизменно не работает.

Это не поможет, основываясь на вашем другом вопросе вашей исходной программе, котораявы пытаетесь перевести это довольно запутанно, если вы никогда не видели такой как раньше.

У вас есть сценарий оболочки, который, как единственное, что он делает, - это запуск perl с программой, источник которой напрямуювстроен в сценарий оболочки.Причина, по которой это делается, заключается в том, чтобы настоящий скрипт запускался под разными установками perl на одном и том же компьютере в зависимости от среды (лично я поместил бы код perl в отдельный файл, а не пытался быть умным, имея его непосредственно всценарий оболочки; документация perlbrew примеры используют этот подход).Это то, что вам нужно беспокоиться о версии Python?Я думаю, вероятно, нет (и если это так, искать питонские способы сделать это, а не скрывать перлы).Что означает ответ на другой вопрос

Вы уверены, что вам даже нужно эквивалентов [в -S и -x]?

нет, я не думаю, что вы делаете.Я думаю, что вы должны просто оставить его на чистом питоне, делая вещи, которые эти опции делают неактуальными.

...