Найти, является ли исполняемый файл Perl переносимым

Я пытаюсь пропатчить программу, которая проверила наличие переносимой версии Perl следующим образом:

use Config;
my $is_portable = $Config{userelocatableinc};

Это не работает на Strawberry Perl, и, следовательно, программа не работает.

Я использую Perl 5.20.1, 64-битный:

>perl -V:userelocatableinc
userelocatableinc='undef';

Что я могу сделать, чтобы определить, является ли текущий Perl переносимым, Strawberry или нет?

2 ответа

Это то, что вы делаете. perl -V:userelocatableinc сообщит вам, был ли он создан для использования относительных путей или нет.

Клубника не построена с этой опцией, поэтому она не переносима. Если вам нужна эта поддержка, вам придется создать ее самостоятельно, хотя я понимаю, что у perl ActiveState есть некоторые хаки, которые делают его переносимым.

Я хотел бы поднять билет с парнями из Клубники и посмотреть, стоит ли им добавлять эту опцию в свою сборку.

Это сработало для меня:

print "I'm portable" if eval 'require Portable';

Portable Strawberry Perl поставляется с Portable.pm в каталоге vendor, который, помимо прочего, увеличивает File::Homedir.

Другие вопросы по тегам