|
Роман Иванов
Выпуск N1. История языка. Сферы применения. Где взять? Первая программа. Отладчик. Целочисленные значения.
-----
Уроки программирования на Perl. Вопросы и Ответы. Хитрости.
Выпуск N 1
История языка. Сферы применения. Где взять? Первая программа.
Отладчик. Целочисленные значения.
-----
---
Часть 1: Урок по Perl
---
+ История языка Perl.
В рассылке пойдет речь об одном из замечательных языков - о Perl.
Язык впервые был создан в 1986 году Ларри Волом и был
предназначен для работы с текстом. Отсюда и его название -
'Practical Extraction and Report Language' (Язык извлечения и
составления отчетов). Прошли годы, и теперь Perl годится для
решения гораздо более широкого круга задач. Это один из самых
популярных языков для написания CGI скриптов (программ в WWW),
благодаря этому в последние годы его популярность резко пошла
вверх.
+ Perl, основные возможности, сферы применения.
Perl - это интерпретируемый язык программирования, т.е.
анализирует написанные Вами программы в момент их исполнения и не
требует предварительной компиляции (сборки) программы. Благодаря
этому, грамотно написанный Perl скрипт может работать как в UNIX,
так и в Windows, как на x86 процессорах, так и на Alpha или Power
PC. В противовес можно поставить язык C, где программу перед
использованием надо скомпилировать, а полученный код получается
зависим от Операционной системы и процессора. Из-за того, что
Perl интерпретируемый язык, программы на Perl называют скриптами.
Perl очень удобен для написания небольших системных утилит, что
уже давно оценили пользователи UNIX систем.
Внешне структура написания программ на Perl напоминает языки
C/C++. В Perl Вы найдете: if, for ,while, until, printf, их смысл
аналогичен таким же операторам в языках C/C++. Но в Perl нет
указателей и структур данных. Однако это компенсируется богатыми
возможностями Perl в работе с текстом и массивами.
Наиболее важные плюсы языка Perl:
+ богатейшие возможности по работе с текстом
+ автоматическое преобразование типов
+ удобная работа с файлами
+ практически все возможности C (кроме указателей и структур)
+ наличие ассоциативных массивов (массивы индексирующиеся
строками)
+ Обработка списков и очередей, стеки
+ Продуманная структура синтаксиса, исключающая большинство
'случайных' ошибок
Основные назначения языка - утилиты, обработка www форм, а также
использование Perl как связующего звена между базой данных на
сервере и пользователем сети. Для Perl есть библиотеки для работы
с большинством SQL серверов, использование которых становится
популярным в последнее время. Но это не значит, что Perl не
годится для всего остального, здесь были указаны только основные
сферы применения языка.
+ Где взять Perl?
Господа Линуксоиды и Юниксоиды могут с гордостью пропустить этот
абзац. Perl поставляется с любой Unix'о подобной системой.
Также как и www сервер.
Любителям Windows придется его скачивать с Internet. Откуда?
Можно с официальных сайтов Perl:
http://www.perl.com,
http://www.perl.org.
Но лично я советую Active Perl. Он полностью совместим с
вышеуказанными, но к тому же содержит примеры и весьма неплохой
Help в HTML формате. Скачать его можно с
http://www.activestate.com/
Последний можно скачать с моего сайта
http://www.online.ee.~ivanov/perl.html
(раздел программы). Или "прямой линк" (8 МегаБайт):
http://www.online.ee/~ivanov/perl/files/ActivePerl-5.6.0.613.msi
Если он не захочет ставиться, попробуйте скачать Update для
Windows Installer:
Win9x (1.5 MB):
http://www.online.ee/~ivanov/perl/files/InstMsi.exe
WinNT (1.5 MB):
http://www.online.ee/~ivanov/perl/files/InstMsint.exe
Примерно спустя 4-5 уроков нам потребуется поставить http сервер
(я рекомендую Omni Httpd, он небольшой и довольно удобный)
для запуска CGI скриптов, но об этом через несколько выпусков.
+ Маленькое отступление от темы
На первых уроках будут даны основные сведения о программировании
на Perl, для того, что бы Вы смогли научится писать на нем
программы. Чуть позже (думаю с 5-6 урока), будет более полный
обзор уже рассказанных возможностей языка.
+ Первая программа.
Как полагается, это 'Привет Мир', т.е. программа которая выводит
текст 'Hello World!'.
#Program Hello World!
print "Hello World\n";
print ('Hello World',"\n");
print 'He'.'l'x2.'o World'."\n";
printf ("%s\n", 'Hello World');
print sprintf ("Hello World\n");
Тут приведено пять примеров.
Строка, которая начинается с '#' - это комментарий. Все, что
написано после знака '#', игнорируется. Это единственный способ
написания комментариев в Perl.
Как видите, в отличие от других языков в Perl нет так называемой
'точки входа' или функции main(), программа начинает выполняться
с первой строчки. Perl требует обязательного наличия ';' в конце
каждого оператора. Скобки в функциях необязательны, и их наличие
требуется только в случае возникновения двусмысленности, а так
это дело вкуса. Двойные и одинарные кавычки в Perl различаются. В
случае двойных кавычек Perl выполнит преобразование текста в них:
вставит переменные и спец. символы если Вы их указали, в
одинарных же кавычках текст изменен не будет. Поясню на примере:
print "Hello World\n"; #напечатает Hello World,
#а '\n' переведет курсор на новую строку
print 'Hello World\n'; #напечатает 'Hello World\n'
print "summa: $a"; #вместо переменной $a Perl подставит ее
#значение
Функция print, как вы уже догадались, выводит некоторую строчку
на экран, хотя при помощи функции print можно также писать в файл
или устройство.
На этом, закончим знакомство с первой программой. Нестрашно, если
некоторые строки в ней Вам непонятны, мы это обсудим немного
позже.
+ Запуск скриптов. Отладчик.
А где писать скрипты, редактора то нет! Именно, официального нет,
но есть множество фирм которые их предлагают. Выбирайте любой. Я
использую Allaire HomeSite, который неплохо приспособлен для
написания скриптов. А так - хоть в NotePad.
Написав первый скрипт сразу хочется запустить его. Это очень
просто: самый универсальный способ - набрать в командной строке:
Perl scriptname [ENTER]
И указанный скрипт запустится.
Под Windows можно ассоциировать Perl.exe с расширением .pl, и
использовать это расширение, при создании Perl скриптов. Если
сделать первую строчку в скрипте:
#!/usr/bin/perl
Где указать полный путь к Perl, то под Windows данная строчка
будет пропущена, а под UNIX позволит запускать скрипт как
самостоятельную программу (предварительно установив у файла
атрибут 'запускной')
У Perl также существует множество параметров. Наиболее полезный -
'-w', который указывает на возможные ошибки в Вашем скрипте.
Отдельные операторы и небольшие программы можно набирать сразу в
отладчике. для этого наберите:
perl -de 0
что значит запустить для отладки скрипт из 0 строк, и Perl просто
запустит отладчик. Вы увидите что-то вроде этого:
Default die handler restored.
Loading DB routines from perl5db.pl version 1.07
Editor support available.
Enter h or `h h' for help, or `perldoc perldebug' for more help.
main::(-e:1): 0
DB<1>
Далее просто набираете оператор. Например
print "Hello World" [ENTER]
print 5+6-7 [ENTER]
Стоит заметить, отладчик точку с запятой не требует. Если вы
хотите ввести команду на несколько строк, то используйте символ
продолжения строки: '\'. Например
foreach (1..10) {\ [ENTER]
print $_;\ [ENTER]
} [ENTER]
Также в отладчике есть несколько полезных команд:
p - сокращение print
q - выход
h - помощь
n - выполнять до следующего выражения
s - как предыдущее, но с входом в подпрограммы
Как показывает практика, этих команд достаточно. Если вы хотите
узнать обо всех командах, напишите и это войдет в следующие
выпуски.
+ Переменные и типы данных.
Данные - одна из самых важных частей любой программы. Perl
автоматически определяет тип используемых Вами данных. Perl делит
данные на численные, строковые, списки и Хяши "Hash". Есть еще
HANDLE, он выдается при открытии файла или потока. Возможно также
использовать ссылки на другие переменны, но сдлелано это
совершенно не так, как в других языках. Примеры:
print 5; # 5
print 6+2; # 8
print 'Privet'; # privet
$kuda="res"; $$kuda=5; # занесет 5 в переменную res (ссылка)
Для удобства целочисленные данные можно вводить несколькими способам:
Десятичные: 23, 2.6, 3.14, 1E6, 23_000
Шестнадцатеричные: 0xFF, 0x2395FABC
Восьмеричные: 0113, 077 (0 - признак восьмеричного числа)
Например:
print 1E6; # 1000000
print 23_000; # 23000
print 0xFF; # 255
Стоит особо заметить, что для внутреннего представления чисел
Perl использует тип с плавающей запятой (double). Однако в
контексте он их различает (например кол-во байт для записи в
файл) и автоматически преобразовывает. К тому же Вы всегда можете
сами это указать при помощи функции int(). Примеры:
print 9&3; # 3
print 3.3 & 1.1 # 3
print 5/2 # 2.5 не целое!
print int (5/2) # 2 - это "отсечение" результата, а не его
#округление
Также в Perl есть так называемые булевые (boolean) переменные,
которые в принципе являются просто численными. Они могут
принимать только два значения: 'истинно'(TRUE) и 'ложно'(FALSE).
'Истинно' равносильно любому числу кроме нуля, 'ложно' это всегда
нуль.
--
Часть 2: Вопросы - Ответы
--
На начало первого выпуска вопросов не было :)
--
Часть 3: Советы и хитрости
--
+ N 1:
Во время написания скрипта, проверяйте его запуская Perl с ключом
'-w'. Благодаря этому, вы можете избежать множества ошибок, так
как своевременно их заметите
+ N 2:
Не забывайте ставить комментарии, хотя бы простые. Это поможет
вам лучше и быстрее понимать смысл программы.
--
Анонс
--
В следующем выпуске: строковые переменные, массивы, списки
значений, простейшие операции сравнения.
--
Если у вас возникли вопросы, вы хотите поделится опытом или не
согласны с автором, то всегда можете высказать свое мнение
написав по адресу: ivanov@online.ee
Офмцальный сайт рассылки http://www.online.ee/~ivanov/perl.html
На нем: полный архив рассылки, Ваши вопросы/ответы, и многое другое.
|