запустить скрипт perl с неизвестным местоположением perl

Я разрабатываю скрипт perl, который, как ожидается, будет загружен пользователями Mac с очень небольшим знанием оболочки, linux и т. Д., Скажем, офисных менеджеров и бухгалтеров.

После загрузки сценарий должен выполняться просто двойным щелчком по графическому интерфейсу.

Моя цель – сделать это настолько безболезненным, насколько это возможно для нетехнического пользователя.

Мои сомнения:

  • после загрузки сценарий не будет иметь исполняемый бит
  • если исполняемый файл perl не находится по умолчанию, тогда я должен написать что-то вместо #!/usr/bin/perl . Что мне там писать? Есть ли другой способ, кроме открытия консоли и типа perl ./script.pl ?

Или, вы можете sh в этом:

  #!/bin/sh exec perl -x "$0" "$@" #!/usr/bin/perl ... 

Да, это sh и Perl все в одном файле.

От man perlrun :

-Икс
говорит Perl, что программа встроена в большую часть несвязанного текста, например, в почтовом сообщении. Ведущий мусор будет отброшен до первой строки, начинающейся с «#!» и содержит строку «perl». Будут применены любые значащие переключатели на этой линии.

Этот подход предполагает только путь sh (который должен быть одним и тем же на любой ОС, совместимой с POSIX), и что неинтерактивный экземпляр sh имеет perl где-то в PATH .

Что касается обеспечения того, что скрипт имеет установленный битовый бит, вы всегда можете его распространять как tarball, и ваши пользователи «щелкните правой кнопкой мыши, извлеките здесь» из графического интерфейса. Если tarball содержит скрипт с установленным битом, извлеченный скрипт должен иметь установленный битовый бит.

Для линии shebang используйте:

 #!/usr/bin/env perl 

env будет искать PATH при выполнении первого perl который он находит. Если вы хотите указать любые параметры perl, просто добавьте их в конец строки выше.

Если установлено более одного perl , env запустит первый, найденный в PATH.