Так что я нашел решение для этого.
argumentsList = []
for i in sys.argv:
argumentsList.append(i)
newStrList = [x.encode('UTF8') for x in argumentsList]
try:
for indx, val in enumerate(newStrList):
print(indx, val)
getattr(ClassContainingMethods,newStrList[indx])()
except KeyError:
pass
Теперь, независимо от того, сколько аргументов (в данном случае вызовов методов) получено в списке, они выполняются.
При удалении Perl из cygwin использование программы установки, это будет использовать Земляничный Perl по умолчанию.
Если Вы не можете удалить Perl из cygwin, можно создать символьную ссылку на исполняемый файл Perl от Земляники.
От оболочки cygwin используйте следующий набор команд:
$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl
Это предполагает использование Земляничного установщика Perl по умолчанию. Обновите Ваш perl.exe
местоположение соответственно, если Вам установили его где-то в другом месте.
Проверьте, чтобы удостовериться, что ссылка работает правильно путем проверки версии Perl:
$ perl -v
Это должно сказать, что Это - жемчуг, (версия), созданная для MSWin32-x86-multi-thread (или подобный) и не созданное для cygwin-thread-multi-64int.
Можно изменить ПУТЬ для помещения каталогов Strawberry сначала. Земляника пытается быть хорошей путем помещения ее каталогов в конце ПУТИ. Если Вы установили из .zip файла, однако, он не изменил ПУТЬ вообще.
Вы могли переместить/usr/bin/perl, но это - плохая идея, так как он повреждается, когда cygwin пытается обновить то, что он думает, его жемчуг. Я просто имел, которые происходят со мной на этой неделе и используемый для случая со мной на моем Mac, пока я не прекратил играть с системной установкой и установил свой собственный абсолютно отдельный материал.
Это - вероятно, не предпочтительное решение, но необходимо смочь изменить #! строка:
#!/cygdrive/c/strawberry/perl/bin/perl5.10.0
Я всегда обращаюсь к явному местоположению и установке жемчуга, вместо того, чтобы полагаться на то, что находится в/usr/bin.
У меня нет своей cygwin машины поблизости, таким образом, я не могу протестировать это, но возможно можно выйти напрямую команду жемчуга со сценарием: перейдите к / мусорному ведру под cygwin и переместите perl.exe туда во что-то еще как perl-org.exe, затем настройте сценарий оболочки что должностные лица Ваш другой жемчуг с теми же аргументами.
У меня есть два сценария, которые я использую для изменения первой строки сценариев Perl к тому, какой бы ни Perl является первым в моем пути: rightperl hardcodes к Perl, который является первым в моем $PATH теперь, envperl, изменит строку на #!/usr/bin/env жемчуг, таким образом, Perl для использования будет только выбран в то время, когда сценарий вызывается. Работы действительно хорошо под Cygwin (и от Unix окружают в целом).
Я могу добавить одну хорошую вещь: если у вас есть правильный Perl, который будет первым на пути, он должен обрабатывать специфичные для сайта модули CPAN, которые вы, возможно, установили с клубничным Perl, работающим в CMD. shell.
"which perl" - ваш друг.
Если у вас возникли проблемы с этим, вы можете установить переменную среды PERL5LIB, но в этом нет необходимости.
Я все еще передаю файл в стиле DOS пути в качестве параметров в сценарии perl, то есть "d: \ data \ myfile.txt", а не "/cygdrive/d/data/myfile.txt". Как ни странно, работает такая комбинация обозначений путей:
bash> /cygdrive/d/scripts/myscript.pl d: \ data \ myfile.txt