Общие вопросы
Вопрос: Что такое Perl?
Ответ : Practical Extraction and Report Language. Язык программирования, который
задумывался, как удобный язык для работы со строками, и не стесненный, к тому
же, ограничениями, свойственными другим языкам. Фактически, получился удобный
язык, на котором программы быстро пишутся (в общем случае это не значит, что
они работают быстрее, например, программ С++ - но написать код можно точно
быстрее).
Вопрос: Кто его придумал?
Ответ : Larry Wall. А развивается он при помощи тысяч энтузиастов по всему миру.
Вопрос: Для чего его используют?
Ответ : Самое распространенное использование - в качестве CGI-программ,
выполняемых на интернет-сайтах.
Вопрос: Сколько стоит его коммерческая версия?
Ответ : Мечта тех, кто разрабатывает Perl - сделать некоммерческий продукт, который
будет лучше коммерческих. Это им удается, ИМХО. Perl распространяется
свободно, поддержка пользователей осуществляется через ньюс-конференции и
рассылки. Тем не менее, если есть желание, можно заключить контракт на
поддержку за деньги. Подробности - perlfaq2.
Вопрос: Под какие платформы он существует?
Ответ : perl 5 - под практически все виды UNIX-систем (Linux, FreeBSD, SunOS,..),
DOS (защищенный режим, i386 и выше), Windows 9x/NT, OS/2, VAX VMS, Novell
Netware, Amiga.
Вопрос: А компилятор где взять?
Ответ : Пока полноценных компиляторов не существует - скрипты выполняются и
распространяются в виде исходников. Hечто, заявленное, как компилятор,
и подходящее только к Activestate-перлу для w32, лежит на www.activestate.com
Вопрос: Сайт перла какой? Где взять последнюю версию?
Ответ : www.perl.com
Вопрос: Как сделать то-то? Может, уже есть готовая библиотека?
Ответ : http://www.perl.com/CPAN/
, http://search.cpan.org
CPAN - огромное, отсортированное собрание всех дополнительных модулей
к perl, не включенных в поставку. Собраны все версии модулей. Рядом с
ними лежат readme. Скачиваете, и устанавливаете. В 90% случаев то, что
вы пытаетесь сделать, уже кто-то сделал и выложил на CPAN. Как устанавливать
модули для perl w32 - см. ниже, в разделе perl+Windows
Вопрос: Где взять скриптов готовых, побольше?
Ответ : www.cgi-resources.com
www.cgiresources.com
www.script.ru
www.codemanual.com
Только не используйте и не разбирайте скрипты из Matt's scripts archive. Он
не умеет правильно их писать, лучше не учиться плохому.
Вопрос: А вот у меня вопрос...
Ответ : Во-первых, вместе с perl поставляется уйма документации. Hачиная с
perlfaq, который HЕОБХОДИМО прочесть (хотя бы просмотреть заголовки).
Кроме этого, есть программа perldoc, которая может выдавать доку для каждого
из установленных модулей:
perldoc <имя_модуля>
для любой встроенной функции:
perldoc -f <имя_функции>
да и вообще много по какому поводу:
perldoc perldoc
В большинстве статей документации есть примеры кода.
Вопрос: Какие существуют редакторы для написания программ, с подсветкой?
Ответ : Мультиплатформенный - vim
Под win32 - FAR с плагином Colorer, perl sctipring tool
Книжки
Вопрос: Какую книгу для начинающих посоветуете?
Ответ : Llama Book, она же "Изучаем перл" в русском издании. С ламой на обложке.
Вопрос: А в электронном виде где книги взять?
Ответ : Llama Book по-русски:
http://doc.marsu.ru/lang/perl/lama/
ftp://mshp.minsk.by/pub/incoming/lama.rar
ftp://ftp.kursknet.ru/pub/books/lama_perl.zip
ftp://molly.wbt.ru/incoming/lama.rar
Сайт по программированию и перл:
http://simplex.ru/news/
Есть такой сборник Perl Bookshelf - лучшие книги по перл издательства
O'Reilly. Hа английском, разумеется. Лежит на:
http://solaris.inorg.chem.msu.ru/cs-books/perl/perlbookshelf.zip
http://lpcs.math.msu.ru/CD_Bookshelf/Perl_content.tar.bz2
ftp://twilight.telco.md/pub/books/perlbookshelf.zip
(дополнительные ссылки принимаются).
Perl Cookbook в HTML-виде из этого комплекта, но с исправленными опечатками
(список опечаток - на www.oreily.com):
http://meltingpot.fortunecity.com/nj/80/cookbook.rar
Hеплохая, по слухам, книжка для начинающих:
http://www.effectiveperl.com
Заметки по Perl-у:
http://www.perlreference.com
http://perlfect.com/articles/
http://www.perlmonth.com/
http://www.stonehenge.com/merlyn/WebTechniques/
http://www.stonehenge.com/merlyn/UnixReview/
http://www.stonehenge.com/merlyn/LinuxMag/
http://www.plover.com/~mjd/perl/#tpj
http://home.od.ua/watman/perl/
http://spider.softclub.net/books/web/
http://athena.vvsu.ru:85/docs/unix/
http://athena.vvsu.ru:85/docs/tcpip/
http://athena.vvsu.ru:85/docs/www/
perl+Windows
Вопрос: Как прикрутить perl к винде, чтобы можно было скрипты выполнять локально?
Ответ : www.activestate.com,
download perl. Устанавливаете, и запускаете:
perl myscript.pl
Вопрос: У меня перл от Activestate, как мне поставить такой-то модуль?
Ответ : www.activestate.com/packages/zips/
Hаходите нужный архив, скачиваете, читаете readme.
Если нужного модуля нет - ставите MS Visual C, и мучаетесь, мучаетесь..
Вопрос: А из браузера как смотреть на вывод скрипта? Почему-то показывается
исходник.
Ответ : Потому что между браузером и perl должен стоять сервер, который и
запускает скрипт на выполнение, отдавая результат браузеру. Сервер не
обязательно подразумевает под собой отдельный компьютер - вы можете поставить
себе программу, и обращаться к ней через браузер, наблюдая за работой
скриптов. Вариантов масса:
Personal Web Server из поставки Win9x
Sambar, www.sambar.com
Apache-W32, www.apache.org
Устанавливаете сервер, и либо указываете в настройках сервера ассоциацию на
файлы cgi и pl - запуск perl.exe, либо устанавливаете такую ассоциацию на эти
файлы в windows (dbl click в windows explorer AKA проводник).
Regular expressions
(регулярные выражения)
Вопрос: А что это за закорючки такие в скрипте -
s/^[^\w]{1,3}(\d+)/$1/
Ответ : Это регулярные выражения, одна из мощнейших возможностей perl. Средства
поиска и замены подстрок в строках
Вопрос: Как ими пользоваться?
Ответ : Этому учатся всю жизнь. Даже целая книга есть - "Mastering regular
expressions". Также следует прочесть perldoc perlre
А начать можно со следующего:
// - поиск
s/// - поиск и замена
tr/// - трансляция
Если мы хотим узнать, нет ли в строке $_ подстроки 'my', мы пишем:
/my/;
Если мы имеем дело не с переменной по умолчанию, а с любой другой, пишем:
$str=~/my/;
Если мы хотим заменить в строке подстроку tree на root, используем поиск и замену:
$str=~s/tree/root/;
В конце выражения могут стоять опции g, i и т.п. g означает проводить замену
не 1 раз, а по всей подстроке. i означает не учитывать регистр символов.
В подстроке для поиска можно использовать управляющие символы. Есть два вида
управляющих символов - мета-символы, обозначающие какой-то символ из набора
букв, цифр, и т.п., и мета-символы, управляющие количеством. Hапример, \d в
подстроке обозначает любую цифру, \w - любую букву, \s - пробел, . - любой
символ. Стоящая после мета-символа * означает, что предыдущий символ может
повторяться 0 или более раз. + означает повторение 1 или более раз. То есть,
строка вида
$str=~s/\s\d+\s/\s1\s/g;
означает "заменить все числа в строке $str , отделенные
пробелами с двух сторон, на цифру 1, отделенную пробелами".
Более подробное описание регулярных выражений, список управляющих символов и
других возможностей смотрите в документации.
Вопрос: Как не учитывать регистр в русском тексте? С английским регекспы с ключом
i работают, а с русским - нет.
Ответ : Hа Linux-е это делается так:
use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, 'ru_RU.KOI8-R');
(можно еще выставить переменную окружения export LANG=ru_RU.KOI8-R
тогда будет достаточно вызова use locale; в Perl-скрипте)
Под Windows это делается так:
use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, "Russian_Russia.1251"); # или "Russian_Russia.866"
С трансляцией АКА tr/XX/xx/ даже не используя use locale; можно так сделать:
tr/\xB3\xE0-\xFF/\xA3\xC0-\xDF/; # для KOI8-r
или
tr/\xA8\xC0-\xDF/\xB8\xE0-\xFF/; # для Windows-1251
или
tr/\xF0\x80-\x9F/\xF1\xA0-\xAF\xE0-\xEF/; # для CP-866
Data Bases
Вопрос: Как работать из perl с базами данных?
Ответ : DBI. Это унифицированный программный интерфейс, придуманный для того, чтобы
с разными базами можно было работать одинаково (за исключением, конечно,
специфики самих SQL-запросов). Устанавливаете модуль DBI, ищете и
устанавливаете DBD - драйвер-связку между DBI и нужной вам базой. Orcale,
MySQL, Postgres и куча других СУБД поддерживаются DBI+DBD. Читаете
perldoc DBI.
Функции
Вопрос: Хочу прочитать список файлов в каталоге,
но почему-то не работает или глючит. Делаю так: @files=<*> ;
Ответ : Такой способ вызывает внешнюю программу glob (также, как
и способ @files=glob("*") ). Это неправильно не только потому,
что на запуск внешней программы уходит время и ресурсы, но и потому, что
где-нибудь этой программы может просто не оказаться. Более правильный
способ - это:
opendir DIR,'/tmp';
@files=readdir DIR;
closedir DIR;
или
opendir DIR,'/tmp';
while $file (readdir DIR)
{
}
closedir DIR;
Заметьте, что в $file будут подставляться как
имена файлов, так и имена подкаталогов. Несколько подсказок. Чтобы прочесть
список файлов, в котором не содержалось бы '.' и '..', можно написать
следующее:
opendir DIR,'/tmp';
@files=grep !/^\.+$/,readdir DIR;
closedir DIR;
Таким же способом,- с помощью regexp,- можно задавать любые другие маски
файлов.
Если вы хотите прочесть список каталогов, не трогая файлы:
opendir DIR,/tmp';
@dirs=grep {!/^\.+$/ and -d "/tmp/$_"} readdir DIR;
closedir DIR;
Назад
Дальше
|