Программирование::Perl::Windows аспекты - F.A.Q.
Скачивать 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 будет более адаптирован для вашей системы!
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 или 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 и т.п.
запускают Консоль (в 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
- 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::Основы
- F.A.Q. по форуму Perl::Разное
- F.A.Q. по форуму Perl::Модули
- F.A.Q. по форуму Perl::Регулярные выражения
- F.A.Q. по форуму Perl::Windows аспекты
- F.A.Q. по форуму Perl::Программирование под mod_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 и т.д.)
2) F.A.Q. Perl::"Разное"::Как отправить письмо из Perl-скрипта? - http://xpoint.ru/faqs/faq7.html#137 - модули Mail::Sender и MIME::Lite
- Русский 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
- вы хотите воспользоваться пакетом на предоставляемом хостинге, но его там нет :-(
Вам понадобятся версии архиваторов 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-библиотек на вашем компьютере и вам уже не надо будет указывать путь к размещению модуля.
http://www.xpoint.ru/forums/programming/cgi_ssi/faq.html#668
![[logo]](/site/images/logo.jpg)