Программирование и распространение Perl - PullRequest
5 голосов
/ 13 июля 2010

Я очень новичок в программировании на Perl. Я только что закончил читать книгу Ламы. До сих пор я писал сценарии на Bash, но я хочу попробовать Perl, и это дает преимущества перед сценариями Bash.

Я создаю скрипт, который использует несколько стандартных модулей (например, Getopt) и некоторые нестандартные модули (например, PerlMagick )

В какой-то момент я хочу распространить свой код на Perl и хочу, чтобы его могли использовать люди, которые действительно не знают о Perl или программировании. Очевидно, что стандартные модули всегда должны быть там (я использую «использовать 5.010», чтобы гарантировать это в определенной степени), но что из нестандартных?

Полагаю, есть две возможности: 1) Должен ли я сказать конечному пользователю установить недостающие модули? 2) Должен ли я создать скрипт установки, который тестирует модули и, если их нет, установить их? Если выбран вариант 2, должен ли я загрузить модули и установить их? Или распространять их с моим основным кодом? Я просто не уверен, что такое этикет с такими вещами ...

Большое спасибо за все советы, Бен

Ответы [ 3 ]

5 голосов
/ 13 июля 2010

Если вы разрабатываете свое приложение как дистрибутив Perl (используемый в CPAN), то вы получаете всю мощь инструментального набора Perl, чтобы справиться с подобными вещами для вас.Вы просто убедитесь, что модули, от которых вы зависите, правильно перечислены в вашем Makefile.PL, а затем кто-то должен написать cpan YourApp::Name, чтобы получить ваше приложение и все, что ему требуется.Или, если они загрузили ваше приложение не из CPAN и создали его вручную, процесс make может найти для них зависимости (вот почему Module::AutoInstall не является полностью мертвым и не заслуживает быть IMO).

Для пользователей Windows единственное, что вы должны добавить до шага cpan YourApp::Name, - это «установить Strawberry Perl».

У вас также есть возможность комплектации (будь то PAR)или просто установщик или архив, который включает в себя и ваше приложение, и все необходимые модули, и, возможно, perl), но есть один существенный недостаток этого метода: это означает, что вы либо не можете использовать любой XSкод, или же вы должны предоставить отдельный пакет для каждой отдельной платформы, которую вы хотите, чтобы ваше приложение поддерживало.Маршрут CPAN не сталкивается с этой проблемой.

3 голосов
/ 13 июля 2010

вы можете конвертировать их в исполняемые файлы. Вы можете попробовать такие вещи, как perlcc , perl2exe , PAR или Комплект разработчика Perl .

1 голос
/ 13 июля 2010

И если вы не хотите компилировать их с prelcc или perlapp - тогда любая возможность работает.

  • Вы должны проверить модуль правильно присутствует версия для вашего кода Perl не требовать сообщения об ошибке вроде: "Не удалось найти Data / UUID.pm в @INC (@INC содержит: ...) ". Например:

    eval { use Data::UUID; };
    if( $@ ) { 
            print "Data::UUID not found\n"; 
    }
    

    или

    eval { use Text::ParseWords 3.23; }; 
    if( $@ ) { 
            print "Text::ParseWords 3.23 not found\n"; 
    }
    
  • Вы можете попробовать использовать модуль CPAN (или программа cpan для unix). Как вы можете попробуйте команду оболочки:

    cpan Data::UUID
    

    или из perl-скрипта:

    #!/usr/bin/perl
    use CPAN;
    CPAN::install("Data::UUID");
    
...