2010-11-23 4 views
4

можно использовать другую версию Perl без использования SET или манипулируя переменные окружения «PATH»версии Perl в Windows,

мне нужен механизм, который позволяет мне работать с другой версией Perl для другой сценарий, не влияя на конфигурацию системы. (например, я использую Perl версии 5.6.1 для некоторых скриптов и Perl 5.8.8 для других сценариев Perl)

ответ

2

Это старый трюк я делаю, когда у меня есть два разных, но очень несовместимые версии Perl я должен использовать: Используйте различные суффиксы:

К примеру, у меня есть ClearQuest в моей системе и должны использовать cqperl (который является версией Perl ClearQuest) для выполнения сценариев, которые обрабатывают проблемы в ClearQuest. Тем не менее, если мне нужно манипулировать данными SQL из нашей базы данных, я должен использовать свой ActivePerl, потому что я не могу добавить модуль DBI в cqperl.

Что я сделал, было связано с суффиксом *.pl с ActivePerl и суффикс *.cqpl с cqperl. Теперь, когда я запускаю скрипт и заканчивается на *.cqpl, он использует одну версию Perl, а сценарий, заканчивающийся *.pl, выполняется другой версией Perl.

Чтобы связать суффикс с программой, перейдите в окно проводника Windows и выберите пункт Свойства папки из Tools меню. Затем нажмите на вкладке Типы файлов. Нажмите на кнопку New и создайте новое расширение для связи с файлом. Затем выберите его в окне «Зарегистрированные типы файлов» и нажмите кнопку «Дополнительно» внизу.

Создайте действие Open и свяжите его с полным именем пути Perl, которым вы хотите выполнить этот суффикс. Как это:

"C:\Perl\bin\perl.exe" "%1" %* 

%* важно, так что вы можете передать другие параметры программы.

В вашем случае вы можете использовать *.pl для Perl 5.8.8 и *.pl6 для Perl 5.6.

Вам не нужно размещать каталог Perl bin на вашем пути. Просто введите имя своего скрипта и все.

1

вы всегда можете просто запустить свои сценарии с помощью Perl-интерпретатор по вашему выбору, давайте предположим, что у вас есть 2 разных перлы, установленные в с:/perl_56 и c:/perl_58.

в CMD.exe вы можете попробовать это:
с: /perl_56/bin/perl.exe path_to_your_script здесь
и
с: /perl_58/bin/perl.exe path_to_your_script здесь

для запуска скриптов через разные версии perl. К сожалению, вы не можете использовать «shebang» в начале ваших скриптов в окнах, как вы могли бы сделать в системах unix.

+0

К сожалению, я бы не знал путь к исполняемому файлу Perl во время работы. Другими словами, я не могу жестко закодировать путь к исполняемому файлу Perl. – hemanth 2010-11-23 14:37:49

+0

Ну, мне кажется, что ваш единственный вариант, чтобы быть на 100% уверенным, что ваши скрипты будут запускаться в целевой системе, - это скомпилировать их в .exe-файл, используя правильную версию perl (таким образом perl включает в себя себя и все библиотеки/модули в архиве, которые затем автоматически извлекаются в temp dir на целевой машине. Таким образом, вы сможете запускать свои скрипты в любом месте, где perl даже не установлен), как описано здесь: http://stackoverflow.com/questions/1237286/how-can-i-compile-my-perl-script-so-it-can-be-execute-on-systems-without-perl-in – 2010-11-24 09:53:11

2

В Unix: используйте линию shebang.

В Windows: при установке perl обычно создается два исполняемых файла: perl.exe и perl5.N.M.exe. Напр. в моей установке Strawberry у меня есть perl.exe и perl5.10.1.exe. Поэтому, если оба perls находятся в PATH, вы можете назвать их perl5.6.1 и 5.8.8. I.e "perl5.6.1 program.pl".

P.S. Я бы предложил обновить всю среду до 5.12.2 - Perl имеет много новых полезных функций.

Смежные вопросы