2016-02-19 6 views
4

Я пишу скрипт Perl, который берет данные и записывает их в файл Excel. Для этого я использую Excel::Writer::XLSX.Как использовать модуль CPAN в Perl-скрипте, который я хочу предоставить другим?

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

У меня есть несколько вопросов по этому поводу:

  1. ли мои коллеги должны иметь модуль, установленный в течение скрипт для работы?

  2. Если нет, как я могу завернуть модуль сценарием, чтобы дать им это?

  3. Есть ли лучший способ сделать это, используя модуль, который я выбрал?

+0

См. Также http://stackoverflow.com/q/4741142/2766176 –

ответ

5

Существует несколько способов сделать это. Один из вариантов - собрать Makefile.PL, который определяет зависимости. Это позволяет вам связывать ваш скрипт как дистрибутив. Например.

use ExtUtils::MakeMaker; 

WriteMakefile(
    ABSTRACT   => 'myscript creates Excel files', 
    AUTHOR   => 'A.U. Thor', 
    EXE_FILES   => [ 'myscript' ], 
    NAME    => 'myscript', 
    VERSION   => '1.2.3', 

    PREREQ_PM => { 
     'Excel::Writer::XLSX' => '0.88', 
    }, 
); 

Тогда люди могут сделать perl Makefile.PL, которые будут информировать их о зависимостях. Если вы делаете make dist и распространяете полученный файл архива, они также могут использовать cpanm для установки вашего скрипта вместе со своими зависимостями.

Другой вариант - собрать cpanfile. Затем получатели могут устанавливать все зависимости с помощью такого инструмента, как cpanm.

Теперь, если вы распространяете сценарий для людей, которые не используют Perl обычно, и вы хотите, чтобы они могли просто щелкнуть и запустить и т. Д., Вы можете посмотреть в pp.

+1

Я не думаю, что вы или Брайан обратился к конкретным вопросам OP – Borodin

3

Давным-давно я написал программу, которую я назвал scriptdist, чтобы превратить однофайльную программу в дистрибутив, подобный CPAN, в комплекте с файлом сборки. Таким образом, вы можете передать его как архив, и люди могут относиться к нему как к любому другому дистрибутиву CPAN. Он в основном автоматизирует what Sinan posted. Я написал об этом для Dr. Dobbs.

Есть трюк, который вы можете использовать, если хотите обойти архив. Инструмент cpan может установить его из текущего каталога. Это будет получить зависимости (которые, по характеру являющихся зависимостей, обязательны для заполнения):

$ cpan . 

Таким образом, вы можете установить программу и ее зависимости, не подвергая ничего в CPAN-как хранилище.

+1

Я не думаю, что вы или Синан обратились к конкретным вопросам OP – Borodin

+3

Я не согласен. Я не думаю, что ваш ответ улучшает то, что сказал Синан и я, и вы приносите больше проблем, чем необходимо, чтобы дать своим коллегам его программу. –

+0

Возможно, вы правы, и, возможно, я неправильно понял исходный вопрос. Но в этом случае, особенно если вы игнорируете три элементарных вопроса OP, я думаю, что это поможет много описать, какую проблему вы отвечаете – Borodin

-4

Это далеко ясно, что вам нужно знать

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

Я думаю, что это очевидно, что ваши коллеги должны иметь доступ к коду, чтобы иметь возможность использовать его

это не ясно, что вы написали, но если вы создали модуль, то любая программа с доступом к вашим файлам модулей можно просто получить use его доступ к его возможностям.

Если нет, как я могу обернуть модуль скриптом, чтобы дать ему их?

Ваш «если нет» не ясен. То, что вы написали средства «Если они не должны иметь модуль, установленный в течение скрипта для работы», и я сомневаюсь, что это ваше намерение

«как я завернуть модуль с script " Вы спрашиваете, как создать модуль, или у вас его уже есть? Как правило, модули доступны для программистов, которые пишут сценарий с use заявление

Если у вас есть модуль, и вы хотите, чтобы другие люди, чтобы иметь возможность загрузить его с use то он должен появиться в одном из каталогов, перечисленных в их @INC массив. Если вы работаете над отдельными системами, тогда лучше всего создать пакет, который вы можете изменить по мере необходимости, и обновите его другим пользователям.

Есть ли лучший способ сделать это (используя), используя выбранный мной модуль?

Вы имеете в виду Excel::Writer::XLSX или ваш собственный модуль?

Если Excel::Writer::XLSX делает то, что вам нужно, то вы, вероятно, не измените его. Но если у вас возникают проблемы с этим в некотором роде, вам нужно задать новый вопрос и описать эти проблемы.

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

  • Нет связанных вопросов^_^