Xpoint
   [напомнить пароль]

Программирование::Perl::Windows аспекты - F.A.Q.

Где взять версию Perl для Windows?
Perl для Windows можно взять на web-сайте http://www.activestate.com

Скачивать ActivePerl можно с этой страницы - http://www.activestate.com/Products/Download/Get.plex?id=ActivePerl

Обратите внимание, на рекомендации к различным версиям Windows и устанавите у себя требуемые для вашей версии компоненты!

Дополнительные модули для Perl от ActiveState находятся здесь - http://www.activestate.com/PPMpackages/. ВНИМАНИЕ! Если вы скачиваете себе zip архивы пакетов( http://www.activestate.com/PPMpackages/zips/), то для версий 5.6.x вы должны выбирать пакеты ActivePerl 6xx!

Вы можете использовать и пакеты (модули) Perl cо http://www.cpan.org/, НО при установке наиболее значимых пакетов (DBI, DBD и т.п.) настоятельно рекомендую воспользоваться версией пакета от ActiveState!

Вообще, основная рекомендация такова: если пакет есть в репозитории AciveState, лучше воспользоваться им, а не версией от CPAN. Скорее всего в пакете присутствуют системно зависимые особенности и пакет от ActiveState будет более адаптирован для вашей системы!

Как инсталлировать дополнительные модули Perl для Windows?
1) В состав поставки ActivePerl входит инструмент для инсталляции пакетов Perl Package Manager (PPM). Для инсталляции необходимого Вам пакета нужно запустить PPM в DOS сессии, набрав команду
C:\>ppm
после этого можно инсталлировать нужный пакет (модуль):
install <имя_модуля>
Вы увидите приглашение менеджера пакетов:
PPM interactive shell (2.1.5) - type 'help' for available commands.
PPM>
Список команд:
Commands:
    exit              - leave the program.
    help [command]    - prints this screen, or help on 'command'.
    install PACKAGES  - installs specified PACKAGES.
    quit              - leave the program.
    query [options]   - query information about installed packages.
    remove PACKAGES   - removes the specified PACKAGES from the system.
    search [options]  - search information about available packages.
    set [options]     - set/display current options.
    verify [options]  - verifies current install is up to date.
    version           - displays PPM version number
Для поиска нужного пакета воспользуйтесь поиском:
PPM>search DBD
- вы увидите результат поиска ввиде списка пакетов DBD, найденных в репозитории:
Packages available from http://ppm.ActiveState.com/cgibin/PPM/ppmserver.pl?urn:/PPMServer:
DBD-CSV      [0.1025] DBI driver for CSV files
DBD-DB2      [0.75  ] Perl driver for IBM DB2 Universal Database
DBD-JDBC     [0.63  ] JDBC proxy driver for the DBI module
DBD-Mysql    [1.2200] DBI driver for Mysql datasources
DBD-ODBC     [0.28  ] ODBC driver for the DBI module.
DBD-Oracle   [1.06  ] Oracle database driver for the DBI module
DBD-Oracle8  [1.06  ] Oracle 8 database driver for the DBI module
DBD-Ovrimos  [0.12  ] DBI Driver for Ovrimos (formerly Altera SQL Server)
DBD-RAM      [0.072 ] a DBI driver for files and data structures
DBD-Recall   [1.8   ] Database fault tolerance through replication.
DBD-SQLrelay [0.1   ] perl DBI driver for SQL Relay
DBD-Sprite   [0.13  ] Modified version of Sprite to manipulate text delimited
DBD-Sybase   [0.91  ] DBI driver for Sybase datasources
DBD-XBase    [0.161 ] Perl module for reading and writing the dbf files
DBIx-AnyDBD  [1.98  ] DBD independant class
Теперь, для того чтобы установить нужный пакет набирите
PPM>install DBD-Mysql
- программа установит выбранный вами пакет непосредственно из репозтория.

2) Если связь с репозиторием не слишком хороша или вы хотите сохранить пакеты для последующего переноса на другой компьютер, вы можете скачать zip пакетов с http://www.activestate.com/PPMpackages/zips/.

Учтите, что для версии Perl 5.6.x нужны пакеты http://www.activestate.com/PPMPackages/zips/6xx-builds-only/ - ActivePerl 6xx (e.g. ActivePerl 623)!!!

Вам нужно разархивировать скаченный модуль. После этого найти файл, соответствующий названию пакета и имеющий расширение '.ppd', и набрать команду:

C:\tmp>ppm install <файл с расширением .ppd>
(пример: ppm install libwin32.ppd)

PPM также позволяет Вам паковать свои собственные модули в PPM-пакеты. Дополнительная информация о том, как это сделать, и о том, где взять необходимые для этого программы nmake, tar и gzip содержится в руководстве по ActivePerl в разделе
'ActivePerl Components' -> 'PPM' -> 'How do I make a PPM package?'

Версии tar и gzip находяться в составе Unix 95 Collection Version 7
nmake - ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe


Как сконфигурировать Микрософт IIS 4.0 для работы с ActivePerl?
Частичный перевод раздела ActivePerl FAQ - Web Server Config из руководства, поставляемого вместе с ActivePerl.
Чтобы настроить IIS или PWS 4.0, для запусков сценариев Perl сделайте следующее:
1. Запустите IIS 4.0 Internet Service Manager.
2. Выберите нужную Вам папку (уровень) в дереве директорий из которой будут запускаться Ваши приложения. Вы можете выбрать сервер целиком, веб-сервер, или создать виртуальную директорию.
3. Выберите пункт <Properties> из меню <Action>.
.
.
7. Нажмите кнопку <Configuration>. Запуститься диалоговое окно конфигурации.
8. Выбор закладку <App Mappings > и нажмите <Add>. Запуститься диалог настройки приложений.
9. Для того, чтобы запускать Perl как приложение CGI, наберите полный путь к Perl.EXE и добавьте в конце %s %s. При запуске Perl сценария в первый %s будет подставляться полный путь на сценарий, а во второй %s -параметры сценария.
10. Для запуска Perl для ISAPI, наберите полный путь на PerlIS.DLL. Указывать %s %s в этом случае не требуется.
11. В качестве расширения для приложений (в поле <Extension>), укажите .pl или .plx (или то, которое Вы хотите использовать для ваших Perl сценариев).
12. Настройка теперь завершена. Нажмите <ОК> и нажмите еще раз <ОК> для сохранения изменений.
13. Закройте IIS 4.0 Internet Service Manager. Так как IIS работает как сервис, Вы должны убедиться в том, что файлы и переменные окружения доступны для него (возможно, Вам придется перезапустить сервис).
Комментарии:
~~~~~~~~~~~
1) Пункты 4, 5, 6 описывают какое из окон появиться при выборе сервера целиком, веб - сервера и виртуальной директории.
2) Рекомендую также посмотреть http://www.geocities.com/SiliconValley/Park/8312/perlis.htm - ответы на проблемы с Microsoft Webserver. Там приводятся указания по самостоятельной настройке реестра, описываются различия в работе CGI и ISAPI и т.п.
Никак не могу найти нужную настройку сервера IIS...
Обычно сервер IIS настраивают так:

запускают Консоль (в NT 4.0+ Option Pack это называется Microsoft Management Console, в Windows-2000 - Computer Managament), находят в левом дереве Internet Information Server, в нем - поддерево Default Web Site (или другой, созданный Вами сайт).

Затем с помощью popup-меню, всплывающего при нажатии правой кнопки мышки, открывают Свойства (Properties) либо у главного поддерева Default Web Site, либо у одного из его подкаталогов или файлов.

Открывается диалог настройки с множеством закладок; на многих их - кнопки для открытия дополнительных диалогов.

НО ТАКИМ СПОСОБОМ НАСТРАИВАЮТСЯ ДАЛЕКО НЕ ВСЕ СВОЙСТВА IIS!

Так настраиваются только "локальные" свойства, которые можно применить к одному из Web-каталогов, поддерживаемых сервером на Вашем компьютере. Существуют еще глобальные настройки, которые относятся ко всему IIS в целом и не могут быть применены только к одному из подкаталогов.

Чтобы "добраться" до этих настроек, нужно открыть Свойства (Properties):
    - в случае IIS 4.0 под NT 4.0 + Option Pack - для имени Вашего компьютера, уровнем выше, чем Default Web Site, и уровнем ниже общего поддерева Internet Information Server;
    - в случае IIS 5.0 под Windows-2000 - для Internet Information Services, уровнем выше, чем Default Web Site.

Откроется сравнительно небольшой диалог. Большая часть функций настраивается в дополнительном диалоге, вызываемом по кнопке Edit для свойств WWW service.

Этот второй диалог очень похож на диалог свойств Default Web Site, но не обманывайтесь: в нем имеются дополнительные пункты!

Более того, новые пункты имеются и в последующих диалогах, вызываемых из него по кнопкам. Рекомендую внимательно изучить возможности настройки IIS, "пройдясь" по всем этим диалогам.

Вот некоторые примеры.

Таймаут для CGI:
    закладка Home Directory, кнопка Configuration (конфигурирование "умолчательного" приложения IIS), закладка Process Options, пункт CGI script timeout

Глобальная таблица MIME-типов:
    кнопка File Types в самом первом диалоге. По этой таблице IIS определяет, какой нужно назначить Content-Type для каждого расширения файла. Насколько я знаю, это единственный способ изменить Content-Type, выдаваемый IIS для данного расширения. (Аналогичные функции в диалоге настроек конкретного файла или подкаталога позволяют только добавить заголовок в HTTP-ответ, но не позволяют изменить уже имеющийся Content-Type.) Кроме того, эту таблицу вообще довольно полезно почитать :-)

прислал Даниил Алиевский

Добавление:
Если выделить сайт в отдельный процесс (для этого в свойствах на вкладке Home Directory установите Run in separate memory...), то появляются дополнительные опции на кнопке Configuration.... В частности - изменение таймаута на CGI и управление кешированием.

прислал Rodion Alukhanov


Как работать с файлами Excel?
Вы можете использовать для работы с Excel-файлами два модуля:
Spreadsheet::WriteExcel - http://search.cpan.org/doc/JMCNAMARA/Spreadsheet-WriteExcel-0.33/WriteExcel.pm
(Spreadsheet-WriteExcel при установке через PPM для ActivePerl)
- для записи в Excel-файлы.

Пример записи:
use Spreadsheet::WriteExcel;
$row1 = $col1 = 0;
$row2 = 1;
$row3 = 2;
my $workbook = Spreadsheet::WriteExcel->new("perl.xls");
$worksheet   = $workbook->addworksheet();
$format      = $workbook->addformat();

$format->set_bold();
$format->set_color('red');
$format->set_align('center');
$worksheet->write($row1, $col1, "Привет, Excel!");
$worksheet->write($row2, $col1, 1.2345);
$worksheet->write($row3, $col1, "Привет, Excel!", $format);


и
Spreadsheet::ParseExcel - http://search.cpan.org/doc/KWITKNR/Spreadsheet-ParseExcel-0.2403/ParseExcel.pm
(Spreadsheet-ParseExcel при установке через PPM для ActivePerl)
- для получения информации из Excel95, Excel97, Excel2000 файлов

Пример чтения данных:
use strict;
use Spreadsheet::ParseExcel;
my $oExcel = new Spreadsheet::ParseExcel;

#1.1 Normal Excel97
my $oBook = $oExcel->Parse('perl.xls');
my($iR, $iC, $oWkS, $oWkC);
print "FILE  :", $oBook->{File} , "\n";
print "COUNT :", $oBook->{SheetCount} , "\n";
print "AUTHOR:", $oBook->{Author} , "\n";
for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++) {
  $oWkS = $oBook->{Worksheet}[$iSheet];
  print "--------- SHEET:", $oWkS->{Name}, "\n";
  for(my $iR = $oWkS->{MinRow} ; 
      defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) {
    for(my $iC = $oWkS->{MinCol} ;
        defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) {
      $oWkC = $oWkS->{Cells}[$iR][$iC];
      print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
    }
  }
}


Для работы этих модулей потребуются:

  • IO::Stringy (IO-stringy для PPM ActivePerl) - точнее IO::Scalar, который туда входит
  • OLE::Starage_Lite (OLE-Starage_Lite для PPM ActivePerl)
  • IO::Handle входит в IO
  • IO::File входит в IO
М.б вам понадобяться и
  • Jcode.pm (if you are using FmtJapan, or FmtJapan2)
  • Unicode::Map (if you are using FmtJapan2 or FmtUnicode)




Ссылки на F.A.Q. Perl-форумов
Полезные ссылки
Robin's Perl for Win32 Page - http://www.geocities.com/SiliconValley/Park/8312/
- старая, но полезная страница, посвященная программирования на Perl под Win32
dada's PPM Repository - http://dada.perl.it/#ppm
- perl for win32 (win32 GUI и т.д.)
Как отправить письмо из Perl-сценария под Win32?
1) продукт IndigoSTAR Software - SendMail for Windows(TM) http://www.indigostar.com/sendmail.htm - Windows версия популярной программы Unix Sendmail. Она позволяет отправлять сообщений из командной строки, CGI сценария или BAT-файла.

2) F.A.Q. Perl::"Разное"::Как отправить письмо из Perl-скрипта? - http://xpoint.ru/faqs/faq7.html#137 - модули Mail::Sender и MIME::Lite


"Русский Apache" и mod_perl для Windows платформы
Русский Apache для Win32 доступен по ссылке ftp://ftp.lexa.ru/pub/apache-rus/win32/ - версия для Windows Installer Package
Модуль mod_perl для Windows можно установить с репозитория http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer Для того чтобы добавить репозиторий в PPM надо использовать команду:
   ppm set repository theoryx5 http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer
FTP доступ к пакетам этого хранилища - ftp://theoryx5.uwinnipeg.ca/pub/other/
Материалы по mod_perl (на англ.) - http://www.take23.org/
Прислано Александром Михалевым

Как инсталлировать модули со CPAN?
Еще раз хочу напомнить: если у нужного вам модуля есть аналог в репозитории ActiveState - лучше воспользоваться им! (см. http://xpoint.ru/faqs/faq37.html#41)

Для чего может понадобиться инталляция модуля со CPAN?

  • нужный пакет отсутствует на ActiveState
  • вы хотите воспользоваться пакетом на предоставляемом хостинге, но его там нет :-(

Вам понадобятся версии архиваторов TAR и GZIP для Windows и утилита nmake от Microsoft

Теперь скачиваем нежный нам модуль с http://www.cpan.org. Я обычно пользуюсь ссылкой Perl core and CPAN modules documentation (Randy Kobes) - http://theoryx5.uwinnipeg.ca/mod_perl/cpan-search?request=search и ввожу имя модуля для поиска. Например, Mail::Sender

Скачиваем модуль ввиде архива - Mail-Sender-0.7.10.tar.gz - и распаковываем его. Получаем дирректорию Mail-Sender-0.7.10. В ней находиться файл Makefile.PL

Внимание! Многие модули требуют наличия других (взаимозависимы)! Эти модули требуется установить ДО установки нужного модуля. Тщательно изучите файл README и т.п. перед установкой пакета!
Теперь разварачиваем пакет:
C:\tmp\faq\2xpoint\Mail-Sender-0.7.10>perl Makefile.PL
C:\tmp\faq\2xpoint\Mail-Sender-0.7.10>nmake
На этом шаге вы получите в вашей директории под директорию со структурой пакета:
blib
  |__arch
  |__lib
      |__auto
      |__Mail
Если вы хотите использовать пакет на внешнем хостинге, вам нужно скопировать директорию Mail в директорию на хостинге и использовать в ваших скриптах указание:
BEGIN {push (@INC, 'путь_к_дирректории_библиотеки');}
use Mail::Sender;
- интерпритатор просматривает модули в путях, указанных в @INC. Ваш модуль обозначен как Mail::Sender, и при его поиске в заданных путях будет искаться поддиректория Mail, в которой должен находиться модуль Sender.pm

Для завершения исталяции на ваш компьютер можно посиупить так же, а можно "положиться" на традиционную инсталяцию:

C:\tmp\faq\2xpoint\Mail-Sender-0.7.10>nmake test
C:\tmp\faq\2xpoint\Mail-Sender-0.7.10>nmake install
- при благоприятном исходе последняя команда поместит модуль в структуру Perl-библиотек на вашем компьютере и вам уже не надо будет указывать путь к размещению модуля.

CGI-скрипт с помощью SSI не выполняется под IIS.
Ответ смотрите в FAQ раздела "Технологии CGI и SSI":
http://www.xpoint.ru/forums/programming/cgi_ssi/faq.html#668
Powered by POEM™ Engine Copyright © 2002-2005