Найти, является ли исполняемый файл 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.