Masters of CGI.Perl
 Сайт клуба знатоков CGI.Perl 
FAQ · Статьи · Конференция · Ссылки · Скрипты

Часто задаваемые Вопросы.. F.A.Q.

Дайджест от 15.11.2000

Если Вы не нашли ответ на свой вопрос в этом дайджесте, то попробуйте найти его в основной базе:

Ключевые слова

Напоминаем, Вы можете получать FAQ на свой e-mail !!! Достаточно подписаться на нашу почтовую конференцию.
 

  Название : Разное  

  1. Как запустить программу и сохранить ее вывод в переменной ?
  2. Как можно обмениваться данными с другими процессами, находящимися на локальном компьютере ?
  3. Как можно безопасно вызвать программу, используя обратные апострофы ?
  4. Как написать модуль?
  5. Как пользоваться функцией pack (getpwuid, dmbopen)?
  6. А где можно найти русскую доку по перлу?
  7. А есть ли где в интернете хорошие доки по перлу?
  8. Я крутой разработчик, где лежит описание того, как сделать perldoc/manpage к своей библиотеке?
  9. Есть ли подробный большой FAQ по перлу?
  10. Где взять описание модуля Lib::Module?
  11. Я под виндами, man у меня нет, где брать стандартную документацию?
  12. Где взять стандартную документацию про такое-то свойство перла?
  13. Какие есть книжки про Перл?
  14. У меня нет root-привилегий. Можно ли использовать модуль CPAN для установки модулей в этом случае?
  15. Как автоматизировать процесс установки библиотек и модулей?
  16. Я скачал модуль Lib::Module. Как его установить?
  17. C www.cpan.org слишком долго качается, нет ли где поближе?
  18. Где можно перл под винды (OS/2, Mac, PDP, amiga) слить?
  19. Где можно взять перл?
  20. Как создавать графические файлы на лету?
  21. Функция time() возвращает время с точностью до секунды. Как работать с меньшими промежутками?
  22. Посоветуйте халявный хостинг с поддержкой CGI на perl
  23. А в электронном виде где книги взять?
  24. Какую книгу посоветуете для продолжающих?
  25. Какую книгу для начинающих посоветуете?
    следующие >>

 

Как запустить программу и сохранить ее вывод в переменной ?


Пример иллюстрирует, как это сделать:
open(DATA,"program args |") || die "Error!";
while (<DATA>) { $output.=$_; }
close(DATA);

Дата добавления: 5.09.2000 Прислать свои комментарии  Наверх 

Как можно обмениваться данными с другими процессами, находящимися на локальном компьютере ?


Вот пример использования стандартных функций для создания потоковых сокетов:
use Socket;
socket(SERVER, PF_UNIX, SOCK_STREAM,0);
unlink "/tmp/mysock";
bind(SERVER,sockaddr_un("/tmp/mysock")) or die("Error!");
socket(CLIENT, PF_UNIX, SOCK_STREAM, 0);
connect(CLIENT, sockaddr_un("/tmp/mysock")) or die("Error!");
также можно воспользоваться функцией IO::Socket::INET;

Дата добавления: 5.09.2000 Прислать свои комментарии  Наверх 

Как можно безопасно вызвать программу, используя обратные апострофы ?


Вызов такой команды, как @mas=`grep '$userfield' file.ext`; очень опасно. Лучше вызывать команду следующим образом:

if (open(GREP,"-|")) {
@mas=<GREP>;
} else {
exec("/usr/local/bin/grep",$userfield,"file.ext") || die "Error!","\n";
}
close(GREP);

Дата добавления: 2.09.2000 Прислать свои комментарии  Наверх 

Как написать модуль?


Простейший случай:

Сам модуль представляет из себя файл с именем МойМодуль.pm следуещего содержания:
package МойМодуль;
require Exporter;

@ISA = qw(Exporter);

@EXPORT = qw(идентификаторы для экспорта: подпрограммы, имена переменных и пр.);
# Теперь после того, как вы use Этотмодуль в своей программе, у вас все
# упомянутые здесь идентификаторы станут видны.

# И/или
@EXPORT_OK = qw(идентификаторы для экспорта: подпрограммы, имена переменных и пр.);
# Идентификаторы, прописанные здесь будут видны в Вашей пргорамме как
# МойМодуль::Идентификатор (подпрограммы) или $МойМодуль::Идетификатор
# (переменные)
# Или Вы можете написать use МойМодуль qw(Ид1 Ид2 $Ид3); и все будет как в
# первом случае. Это рекомендуемый вариант.

... ваши подпрограммы и пр ....

1; # Обязательно
# конец МойМодуль
Программа, его используящая:
use МойМодуль qw(...);
# Ну и далеее
Подробности смотрите в perlmod(1), Exporter(3pm), Camel Book

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Как пользоваться функцией pack (getpwuid, dmbopen)?


man perlfunc или "perldoc -f имя_функции | pod2text"

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

А где можно найти русскую доку по перлу?


Если нет возможности купить в магазине, то есть кое-что и в Интернете: книга маслова "Введение в перл", например. http://citforum.ru/koi/internet/perl_tut/ Есть и другие, много, особо хороших не видел.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

А есть ли где в интернете хорошие доки по перлу?


Да. На мой взгляд, серия статей Рандала Шварца для Unix Review Perl Columns - лучшее введение в перл, и намного интереснее и полезнее книг Llama и Camel. Почитать их можно на http://w3.stonehenge.com:80/merlyn/UnixReview/

Почему я считаю это лучшим введением в перл? Потому что это отдельные небольшие статьи, каждая из которых иллюстрирует конкретные возможности перла на примере написания программы для достаточно простой задачи. Все же статьи охватывают практически весь спектр возсожностей перла -- от написания скрипта в одну строку, который может поменять Иванов на Сидоров во всех файлах в дереве директорий, до основ объектно ориентированного программирования и принципов создания собственных модулей и библиотек.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Я крутой разработчик, где лежит описание того, как сделать perldoc/manpage к своей библиотеке?


Про это говорят в perldoc perlpod, в man pod2man.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Есть ли подробный большой FAQ по перлу?


Да, он тоже входит в набор стандартной документации. Отправная точка - perldoc perlfaq, это оглавление, из которого можно узнать, что FAQ состоит из девяти больших частей.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Где взять описание модуля Lib::Module?


Формат стандартной документации по перлу (pod) обладает возможностью встраивания прямо в тексты программ, а программа perldoc - возможностью извлечения этой документации. Поэтому, чтобы получить документацию по модулю Math::Trig, просто наберите perldoc Math::Trig - perldoc найдет этот модуль и покажет документацию из него. Если модуль не является частью какой-то библиотеки, а существует сам по себе, например, CGI.pm тогда просто perldoc CGI.pm или даже perldoc CGI. NB: программа perldoc не очень расторопна, поэтому при установке перла под UNIX производится создание manpages для всех модулей, так что man CGI или man Math::Trig покажет быстрее, чем perldoc.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Я под виндами, man у меня нет, где брать стандартную документацию?


Перл для win32 поставляется с программой perldoc (пользоваться: "perldoc perlfunc" и т. д.) а также с документациией в HTML: если хочешь perldoc perlfunc, ищи perlfunc.html.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Где взять стандартную документацию про такое-то свойство перла?


Перл приходит с полным набором документации и набором программ для переведения в разные форматы. Обычно для подробного ознакомления с некоторой особенностью перла пишут "perldoc perlсвойство" или "man perlсвойство". Базовый набор "свойств" таков:

Основы perldata, perlvar, perlsyn, perlop, perlsub
Запуск perlrun, perldebug
Функции perlfunc
Objects perlref, perlmod, perlobj, perltie
Data Structures perlref, perllol, perldsc
Modules perlmod, perlmodlib, perlsub
Regexps perlre, perlfunc, perlop, perllocale
Moving to perl5 perltrap, perl
Linking w/C perlxstut, perlxs, perlcall, perlguts, perlembed
Various http://www.perl.com/CPAN/doc/FMTEYEWTK/index.html
(not a man-page but still useful)

perl О перле вообще
perldelta Что нового в последней версии перла
perlfaq FAQ
perltoc Подробное оглавление ко всей документации
perldata Типы данных
perlsyn Синтаксис языка
perlop Арифметические, логические, строковые
операции и их приоритет
perlre Регулярные выражения (обработка текста и поиск)
perlrun Опции командной строки
perlfunc Встроенные функции
perlvar Специальные переменные
perlsub Как писать свои функции (процедуры)
perlmod Устройство и принцип работы модулей
perlmodlib Модули: создание собственных библиотек
perlmodinstall Поиск и установка модулей и библиотек на CPAN
perlform "Форматы", или шаблоны для выводимых данных
perllocale Поддержка интернационализации
perlref Ccылки и указатели на данные
perldsc Введение в структурные типы данных
perllol Структуры данных: массивы и списки
perltoot Введение в объектно-ориентированное
программирование
perlobj Объекты в перле
perltie Связь объектов с обыкновенными переменными
perlbot Perl OO tricks and examples
perlipc Связь между процессами: pipes, sockets,
сигналы и др.
perldebug Отладка программ
perldiag Сообщения об ошибках
perlsec Вопросы безопасности
perltrap Возможные грабли и ловушки
perlport Как писать портабельные программы
perlstyle Стиль программирования на перле
perlpod Формат стандартной документации и документация,
встраиваемая в исходные тексты программ
perlbook О книгах про перл
--- (для совсем крутых) ---
     
perlembed Способы внедрения перл-программ в программы на C/C++
perlapio Собственный API, использумый в исходниках перла
perlxs XS - программирование перловских библиотек,
используемых вместе с библиотеками на C
perlxstut Учебник по XS
perlguts Внутренние функции перла для разработчиков
perlcall Соглашения о вызове перловских функций из C
perlhist История и полный список всех версий перла
Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Какие есть книжки про Перл?


Две классические книги по перлу, первая имеется в русском переводе и продается в магазинах:
  • Рандал Шварц, Том Кристиансен.
    Изучаем перл (aka Llama book)
  • Лэрри Уолл, Том Кристиансен, Рандал Шварц.
    Programming Perl (aka Camel book, на русском, кажется, еще нет)

Llama book - учебник для начинающих,
Camel book - справочное руководство.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

У меня нет root-привилегий. Можно ли использовать модуль CPAN для установки модулей в этом случае?


При использовании CPAN-модуля вам необходимо сконфигурировать его таким образом, чтобы он сам инсталлировал модули туда, куда вы укажете. Для этого вам необходимо подредактировать файл ~/.cpan/CPAN/MyConfig.pm: указать в строке
  'makepl_arg' => q[prefix=/home/you],
и теперь всегда при автоматической инсталляции модули будут ставится к вам в $HOME/lib/perl5
Более подробно обо всем этом можно прочитать в документации к ExtUtils::MakeMaker.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Как автоматизировать процесс установки библиотек и модулей?


Скачивание и установка вручную - достаточно сложное занятие, требующее постоянного вмешательства с вашей стороны. Можно простым способом: сделать su (желательно), набрать perl -MCPAN -e shell. Если это первый запуск модуля CPAN, вам задатут серию вопросов на тему URL вашего любимого зеркала CPAN. После этого все просто: если вы знаете название модуля или библиотеки, то набираете, скажем, install Net::NNTP. Тогда этот модуль (для работы с NNTP) сам ищется на CPAN, сам скачивается, компилируется, устанавливается. Все, поставили, можно выходить и использовать вновь установленный модуль. Если название точно не известно, то набираем там же help и испльзуем различные команды поиска типа i NNTP.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Я скачал модуль Lib::Module. Как его установить?


Обычно модуль приходит в формате tar+gzip, типа module-0.01.tar.gz.
Вам необходимо его развернуть:
  gzip -dc module-0.01.tar.gz | tar xf -
и перейти в образовавшуюся директорию, например module-0.01:
  cd module-0.01
Обычно там находятся несколько файлов. Для вас будут важными следующие:
  README    - что это за модуль
INSTALL - как его поставить
Makefile.PL - перловый скрипт для генерации Makefile
Обычно инсталляция происходит следующим образом:
  perl Makefile.PL - генерация Makefile
make all - сборка модуля
make test - тестирование модуля
make install - инсталляция модуля
Необходимо внимательно смотреть, не возникли ли какие ошибки во время первых трех команд. Внимание: вы должны иметь административные привелегии для инсталлирование модуля в системе (обычно как root).

Но, если вы их не имеете, то можете инсталлировать модуль у себя. Для этого вам необходимо выбрать, где это будет делаться. Для примера, в $HOME/lib/perl5. Необходимо создать эти директории, если их нет:
  mkdir ~/lib
mkdir ~/lib/perl5
Затем, при генерации Makefile для модуля, вы должны указать, где вы хотите инсталлировать модуль:
  perl Makefile prefix=$HOME
Все остальные шаги без изменений. В результате вы получите альтернативное место, где у вас будут находиться модули.
Например, у меня это выглядит так:
  artur@disco:~ (681) ls -alFg ~/lib/perl5/
total 704
drwxr-sr-x 8 artur staff 512 Oct 06 15:53 ./
drwxr-sr-x 9 artur staff 1024 Oct 08 10:50 ../
drwxr-sr-x 4 artur staff 512 Mar 31 1998 aix/
drwxr-sr-x 2 artur staff 512 Aug 06 13:40 CPAN/
-r--r--r-- 1 artur staff 126951 Jul 24 19:37 CPAN.pm
drwxr-sr-x 3 artur staff 512 Mar 31 1998 man/
drwxr-sr-x 31 artur staff 1024 Sep 09 15:41 site_perl/
Для того, чтобы их использовать, есть несколько путей:
  1. указывать при запуске perl в командной строке:
      perl -I$HOME/lib/perl5 -I$HOME/lib/perl5/site_perl script.pl
  2. завести переменную шелла PERL5LIB:
      для sh (bash,zsh,ksh)
        PERL5LIB=$HOME/lib/perl5:$HOME/lib/perl5/site_perl
      export PERL5LIB
      для csh (tcsh)
        setenv PERL5LIB $HOME/lib/perl5:$HOME/lib/perl5/site_perl
  3. указывать в начале скриптов дополнительные библиотеки:
      use lib "/home/you/lib/perl5";
    use lib "/home/you/lib/perl5/site_perl";
    Данный случай подходит к CGI-скриптам, которые не наследуют ваших переменных окружения.
Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

C www.cpan.org слишком долго качается, нет ли где поближе?


Есть. Полный список зеркал находится в ftp://ftp.nluug.nl/pub/languages/perl/CPAN//MIRRORED.BY, там можно найти funet или что там поближе, или даже российские зеркала, например ftp://ftp.sai.msu.su:/pub/lang/perl/CPAN/ (иногда в дауне).

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Где можно перл под винды (OS/2, Mac, PDP, amiga) слить?


Там же, где и под UNIX, то есть на CPAN, только не в src/, а в ports/. Например, порты перла для платформы win32 лежат в http://www.perl.com/CPAN/ports/win32/. Там лежат два порта: стандартный (GURUSAMY-порт) и порт фирмы ActiveState (обычно устаревшие версии перла).

Gurusamy (он же Standard) содержит исходники Perl 5.005, бинарный дистрибутив Perl 5.004 и ряд библиотек для него.
  perl5.00402-bindist04-bc.zip
perl5.00402-bindist04-bc.tar.gz
A popular binary distribution of Perl for the Win32 platform...
perl5.005_52.patch.gz
perl5.005_52.tar.gz
Latest development release of Perl. This is only for developers and
others who like to sit on bleeding edges (pun irrelevant)...
Каталог ActiveState на CPAN уже ничего не содержит, кроме рекомендации искать их порт на www.activestate.com.

ActivePerl основан на 5.005.

из README для Active Perl:
  The ActivePerl package contains all you'll need to get Perl up and running --
even with a Web server!

ActivePerl includes:
- Perl for Win32 - binary of core Perl distribution.
- Perl for ISAPI - IIS plug-in that makes Perl CGI lightning fast.
   - PerlScript - ActiveX scripting engine, like JavaScript or VBScript with a
       Perl brain.
- Perl Package Manager - Perl extension installer and manager.
Perl на Apple Macintosh посвящена страница http://www.iis.ee.ethz.ch/~neeri/macintosh.html

Для Netware Perl дают на /CPAN/ports/netware. Кроме того, perl входит в поставку Netware 5.

Для мейнфреймов IBM System/390 perl 5.005 компилируется прямо из стандартной unix поставки.

Для IBM AS/400 Perl можно взять опять-таки на CPAN в каталоге ports.

А вот для pdp-11 Perl не бывает.

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Где можно взять перл?


На CPAN = Comprehensive Perl Archive Network.
Homepage CPAN - http://www.cpan.org/ - там берут все, связанное с перлом. Собственно исходники новейшей версии перла берут из файла http://www.perl.com/CPAN/src/latest.tar.gz (на самом деле с www.perl.com стоит редирект на ближайший, по мнению www.perl.com, mirror).

Автор: Павел Аммосов

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Как создавать графические файлы на лету?


GD
Источник: FIDO - RU.CGI.PERL (FAQ created by SLY Golovanov, 2:5020/794.13)

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Функция time() возвращает время с точностью до секунды. Как работать с меньшими промежутками?


Time::HiRes
Источник: FIDO - RU.CGI.PERL (FAQ created by SLY Golovanov, 2:5020/794.13)

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

Посоветуйте халявный хостинг с поддержкой CGI на perl


www.virtualave.net
free.prohosting.com
www.hypermart.net

Источник: FIDO - RU.CGI.PERL (FAQ created by SLY Golovanov, 2:5020/794.13)

Дата добавления: 31.08.2000 Прислать свои комментарии  Наверх 

А в электронном виде где книги взять?


Llama Book по-русски:

Сайт по программированию и перл:

Есть такой сборник Perl Bookshelf - лучшие книги по перл издательства O'Reilly. Hа английском, разумеется. Лежит на:

В виде архива ее можно взять как


Perl Cookbook в HTML-виде из этого комплекта, но с исправленными опечатками (список опечаток - на www.oreily.com):

Hеплохая, по слухам, книжка для начинающих:

The Perl Journal:

Заметки по Perl-у:



Источник: FIDO - RU.CGI.PERL (FAQ created by SLY Golovanov, 2:5020/794.13)

Дата добавления: 30.08.2000 Прислать свои комментарии  Наверх 

Какую книгу посоветуете для продолжающих?


Perl Cookbook. Переведенена как "Perl. Библиотека программиста".
Авторы: Том Кристиансен и Натан Торкингтон
Список конкретных задач и их решений, плюс уроки хорошего стиля программирования.

Источник: FIDO - RU.CGI.PERL (FAQ created by SLY Golovanov, 2:5020/794.13)

Дата добавления: 30.08.2000 Прислать свои комментарии  Наверх 

Какую книгу для начинающих посоветуете?


Llama Book, она же "Изучаем перл" в русском издании. С ламой на обложке.

Источник: FIDO - RU.CGI.PERL (FAQ created by SLY Golovanov, 2:5020/794.13)

Дата добавления: 30.08.2000 Прислать свои комментарии  Наверх 

  следующие >>

Сайт клуба знатоков CGI.Perl - Masters of CGI.Perl
Designed by MoveR Studio © 2000  - | -  Вопросы? Предложения? пишите