15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


ФАЙЛОВЫЙ ВВОД И ВЫВОД

Perl специально разрабатывался для того, чтобы служить адек-
ватным средством для чтения и записи в текстовые файлы. Тем не
менее, как вы узнаете далее, Perl выполняет функции по произ-
вольному доступу и вводу-выводу бинарных файлов. Операции по ра-
боте с файлами требуют указатель файла (file handle), который яв-
ляется переменной, соответствующей конкретному файлу. По умолча-
нию каждый скрипт на языке Perl имеет три стандартных указателя,
которые Perl автоматически открывает при запуске скрипта: STDJN,
STDOUT, STDERR. Эти три стандартных указателя отвечают стандар-
тным потокам STDIN, STDOUT, STDERR языка программирования С. Кро-
ме того, скрипт языка Perl может открыть дополнительные указате-
ли для других специфических файлов.

ОТКРЫТИЕ ФАЙЛОВ И ДРУГИХ ПОТОКОВ
Для того чтобы скрипт использовал файл, он должен вызвать
функцию open. Она имеет следующий вид:

open(FileHandle[, FileName])

В отличие от функции open библиотеки времени выполнения язы-
ка С, функция open языка Perl не содержит параметра mode в вызо-
ве функции. Perl определяет режим (mode) открытия файла, основы-
ваясь на имени файла. Таблица 12.3 иллюстрирует связь режима от-
крытия файла и имени файла.

Имя файла Операция
<FILE> Открыть файл только для чтения (аналогично
<r> функции fopen)

<<FILE> Открыть файл для чтения (то же самое, что <FILE>)
<>FILE> Создать файл для записи (как <w> функции fopen)
<>>FILE> Открыть файл для добавления в его конец (как <г+>
функции fopen)
<+>FILE> Создать файл для чтения/записи (как <rw> функции
fopen)
<+<FILE> Открыть файл для чтения/записи (как <rw+> функции
fopen)
<| CMD> Открыть канал из процесса, исполняющего команду
<CMD>
<CMD |> Открыть канал процессу, исполняющему команду <CMD>

Табл. 12.3. Соглашение об именах и режимах доступа файлов языка
Perl

Примечание: Режим канального (pipe) потока может существовать не
на всех системах.

Если в вызове функции open опущено имя файла, то Perl подра-
зумевает, что имя файла содержится в строковой переменной
$FileHandle. Когда скрипт завершил использование файла, он закры-
вает его, используя функцию close, как показано ниже:

close(FileHandle);

фрагмент программы иллюстрирует использование функций open и
close:

open(InFile, "test.dat") || die; # открываем для чтения
# test.dat

open(OutFile, ">test.dat") || die; # создаём test.dat

$AuxFile = ">>test.dat";
open(Aux, $AuxFile) || die; # открывает для дополнения
# test.dat

close(InFile);
close(OutFile);
close(Aux);

Обратите внимание, что указатели файлов не имеют обычных од-
носимвольных префиксов. Как вы узнаете далее, скрипты языка Perl
могут хранить имена указателей в виде строк скалярных переменных
и передавать указатель любой функции, которая может их обрабаты-
вать. При необходимости Perl выполняет конвертацию значений.
В операционной системе MS-DOS Perl поддерживает дополни-
тельную функцию, которая называется hinmode и позволяет файлово-
му вводу/выводу переключаться между текстовым и бинарным режима-
ми. В большинстве же систем различие между текстовым и бинарным
режимами не имеет значения. Однако для операционной системы
MS-DOS символ новой строки представляет собой последовательность
из двух символов (CR+LF). Поскольку большинство программ не ожи-
дают встретить два символа в конце строки, то система ввода/выво-
да должна выполнить преобразование. Для того чтобы можно было ис-
пользовать функцию binmode, соответствующий указатель может быть
открыт. Функция binmode имеет следующий формат:

binmode(FileHandle);

ПОСТРОЧНОЕ ЧТЕНИЕ И ЗАПИСЬ ДАННЫХ
Простейшим способом для чтения скриптом строки из файла слу-
жит использование оператора <FILEHANDLE'>. В языке Perl указа-
тель файла, окруженный треугольными скобками, становится симво-
лом ввода (input-symbol). Например, следующий фрагмент программы
иллюстрирует использование символа ввода для чтения и вывода на
экран содержимого файла Test.dat.

open(InFile, "Test.dat") || die;
while ($line = <InFile>)
{
print $line; # Выведет строку из файла
}
close(InFile);

Когда символ ввода достигает конца файла, он возвращает зна-
чение false, которое в данном случае заканчивает выполнение цик-
ла while. Существует специальный (пустой) символ ввода, обозна-
чаемый <>, который имеет весьма специальное, но полезное примене-
ние. В первый раз, когда скрипт использует пустой символ ввода
<>, он анализирует аргументы командной строки. Если строка @ARGV
является пустой, то входной символ <> читает из STDIN. Если вмес-
то того @ARGV не пуста, то Perl открывает первый из файлов, ука-
занных в переменной @ARGV, и читает содержимое файла. Когда Perl
заканчивает обработку одного файла, он приступает к следующему.
После того как скрипт прочитал все файлы, символ <> возвращает
значение false.
Скрипты языка Perl также могут использовать символ ввода для
чтения всего содержимого файла в массив так, что каждая строка
файла становится элементом массива. Например, следующая инструк-
ция читает из файла STDIN в массив @lines:

@lines = <STDIN>;

Запись данных в файл также достаточно проста. Фактически вы
это делали всякий раз, когда использовали функцию print. Полный
формат функции print имеет следующий вид:

print [FileHandle] List;

Если функция print не получает в качестве аргумента указате-
ля файла, то она посылает вывод в STDOUT. Следующий фрагмент
программы иллюстрирует использование функции print для добавле-
ния данных в выходной файл:

open(LogFile, '>>logfile.dat') || die;

##############

($m, $d, $y) = (localtime(time)) [4,3,5];

print LogFile "Captain's log, Stardate ++m$/$d/$y\n";
close(LogFile);

Примечание: Указатель файла и выходной список не разделяются за-
пятой.

ЧТЕНИЕ И ЗАПИСЬ БЛОКОВ ДАННЫХ
Программисты часто рассматривают текстовые файлы как тексто-
вые потоки просто потому, что один символ следует за другим до
маркера конца файла. Если скрипт должен работать с файлом, кото-
рый ориентирован на работу с блоками, а не потоками, то скрипт
может использовать функции sysread и syswrite для обработки фик-
сированных блоков данных. Функции sysread и syswrite имеют сле-
дующие форматы:

$result = sysread(FileHandle, $Var, Length[, Offset]);
$result = syswrite(FileHandle, $Var, Length[, Offset]);

Если в вызове функций указывается сдвиг от начала файла
(Offset), то функции выполнят поиск места, с которого они начнут
операции ввода/вывода. Функции sysread и syswrite обе передают
данные, используя скалярную переменную строкового типа. Пос-
кольку функции обрабатывают фиксированные блоки памяти, то дан-
ные могут содержать бинарные значения, включая нули и маркеры
конца файла. Если в вызове функции указывается сдвиг от начала
файла (Offset), то функция выполняет поиск места в файле, с кото-
рого начинает выполнять операции ввода/вывода.
Если вы работаете с блоками данных, то скрипты могут также
использовать следующие функции ввода/вывода:

$result = seek(FileHandle, Position, Base);
$result = tell(FileHandle);
$result = eof(FileHandle);

Функция seek работает в точности так же, как fseek - фун-
кция библиотеки времени выполнения языка С. Параметр Position за-
дает позицию относительно начала отсчета, которая в свою очередь
задается параметром Base следующим образом:

? 0 Поиск от начала файлов
? 1 Поиск от текущей позиции
? 2 Поиск от конца файла

Функция tell языка Perl работает в точности так же, как фик-
ция ftell библиотеки времени выполнения языка С. Эта функция воз-
вращает текущую позицию в файле, с которой выполняются операции
чтения или записи. Наконец, функция eof, так же как и функция
feof языка С, возвращает значение <истинно> или <ложино>, кото-
рое скрипт может использовать для определения достижения конца
файла.

ОБРАБОТКА БИНАРНЫХ ДАННЫХ
Хотя Perl ориентирован в первую очередь на обработку текста,
он также может обрабатывать бинарные данные. Скрипты могут пере-
мещать бинарные данные частями, используя строковые переменные, и
выполнять байтовые операции ввода/вывода, используя функции
sysread и syswrite. Однако для того, чтобы выполнить что-нибудь
<полезное> с данными, скрипт вынужден конвертировать данные в
свои <родные> скалярные форматы.

ХРАНЕНИЕ БИНАРНЫХ ДАННЫХ
Когда скрипт на языке Perl читает блок бинарных данных, ис-
пользуя функцию sysread, он помещает эти бинарные данные в ска-
лярную строковую переменную. Perl не заботится о том, что это за
данные, содержат ли они нули или значения, не являющиеся
ASCII-символами. В пределах символьной строки Perl принимает бай-
ты как байты. В отличие от языка С, Perl не использует строк,
оканчивающихся нуль-символом. Если данные соответствуют кодовой
таблице ASCII, то скрипт может их обрабатывать, как любой текст.
Но если данные представляют собой бинарные величины, то скрипт
обязан распаковать их перед тем, как Perl сможет обработать эти
данные.

РАСПАКОВКА СТРОК БИНАРНЫХ ДАННЫХ В ПЕРЕМЕННЫЕ ЯЗЫКА PERL
Для того чтобы скрипт получил доступ к бинарным данным, он
должен распаковать их, перейдя в свой скалярный формат. Скрипты
Perl распаковывают данные, используя функцию unpack, которая
имеет следующий формат:

$result = unpack(Template, Expression);

Expression является обычной строковой переменной, которая
содержит бинарные данные, прочитанные функцией sysread, но может
быть также выражением, которое необходимо интерпретировать как
строку. Template представляет собой символьную строку-шаблон,
описывающую, как интерпретировать значения в операнде Expression.
Следующий фрагмент программы иллюстрирует использование функции
unpack:

($r, $g, $b) = unpack("C3", $color);# распакует в 3 символа

@longwords = unpack("L*", $data); # распакует в список длинных
# слов
@stuff = unpack("S2L", $bin); # распакует в 2 shorts и long

Каждый символ шаблона может сопровождаться числом, указываю-
щим, сколько раз использовать этот символ. Если вместо числа
стоит звездочка (*), то операция будет выполняться для всех ос-
тающихся данных в строке. Если число не поставлено, то она выпол-
няется однократно. Скрипт может поместить любое число символов
шаблона в строку Template. В таблице 12.4 перечисляются символы,
входящие в строковый параметр Template вместе с описанием влия-
ния каждого из них на выполнение функции unpack.

Символ шаблона Описание
a Строка ASCII без нулевого символа
А Строка ASCII без нулевого символа
b Битовая строка (младший бит идет первым)
В Битовая строка (старший бит идет первым)
с Однобайтовый символ со знаком
С Однобайтовый символ без знака
d Значение с плавающей запятой, двойной точности
f Значение с плавающей запятой, одинарной точности
шаблона
h Строка шестнадцатиричных значений (младшие разряды
идут первыми)
Н Строка шестнадцатиричных значений (старшие разряды
идут первыми)
i Целое со знаком
I Целое без знака
l Целое со знаком типа long
L То же, только без знака
n Короткое целое
N Длинное целое
p Указатель на строку
s Короткое целое со знаком
S Короткое целое без знака
u Раскодировка строки
v Короткое целое
V Длинное целое
х Пропустить вперед один байт
Х Пропустить назад один байт
@ Перейти на указанную позицию в строке
Табл. 12.4. Символы шаблона

УПАКОВКА ДАННЫХ В БИНАРНЫЕ СТРОКИ
Для вывода бинарных данных скрипт должен запаковать скаляр-
ные величины в строки бинарных символов. Для этого используется
функция pack, формат которой указан ниже:

$result = pack(Template, List);

Следующий фрагмент программы иллюстрирует использование фун-
кции pack:

$color = pack("C3", $r, $g, $b);
$data = pack("L*", @longword);
$bin = pack("S2L", @stuff);

Функция pack использует те же самые символы шаблона, что и
функция unpack, за исключением символов а. А, и, х, X, @.

РАБОТА С КАТАЛОГАМИ
Perl предоставляет не только широкий набор функций для обра-
ботки файлов, но также несколько очень удобных функций для скани-
рования каталогов. В следующих разделах мы рассмотрим некоторые
из основных функций для работы с каталогами в деталях.

ОТКРЫТИЕ, ЧТЕНИЕ И ЗАКРЫТИЕ КАТАЛОГОВ
Скрипты на языке Perl позволяют открывать и читать содержи-
мое файлов. Точно так же эти скрипты открывают каталоги и читают
имена содержащихся в них слайдов. Для открытия каталога скрипты
используют функцию opendir, передавая указатель каталога и путь к
нему. Для чтения списка файлов, содержащихся в каталоге, скрипт
использует функцию readdir. Наконец, для закрытия каталога ис-
пользуется функция closedir. Следующий фрагмент программы иллюс-
трирует использование функции readdir для того, чтобы вывести на
экран список файлов в текущем каталоге:

opendir(Dir, $INC[2]) || die;

while ($file = readdir(Dir))
{
print "$file \n"
}

closedir(Dir);

В этом фрагменте используется переменная $INC[2J для досту-
па к текущему каталогу. Изменяя $INC[2] на $ARGV[0], скрипт выво-
дит на экран список файлов, содержащихся в каталоге, который вы
указали в командной строке. В дополнение к функциям для работы с
каталогами, которые были рассмотрены выше, Perl предлагает еще
набор фикций, которые позволяют позиционировать текущий указа-
тель в списке каталога:

$result = rewinddir(DirHandle);
$result = telldir(DirHandle);
$result = seekdir(DirHandle, Position);

ФОРМАТИРОВАННЫЙ ВЫВОД
В этой главе вы познакомились с несколькими способами форма-
тирования выходных данных скрипта с помощью функции print. Анало-
гично языку С, Perl также поддерживает функции printf и sprintf.
В дополнение Perl также поддерживает генерацию отчетов в форме
столбцов, используя шаблоны форм.

ИСПОЛЬЗОВАНИЕ ФУНКЦИИ PRINT
В этой главе скрипты широко использовали функцию print. Кро-
ме того, Perl обеспечивает специальные переменные, которые влияют
на работу функции print. В таблице 12.5 кратко характеризуются
эти специальные переменные.

Переменная Назначение
$, Разделитель для элементов печати
$" Разделитель элементов списка при интерполяции строки
$\ Разделитель для выходных записей
$# Форматирование числового выхода (по умолчанию '%.20g
')

Табл. 12.5. Специальные переменные, которые управляют функцией
печати

Для использования этих специальных переменных достаточно
просто присвоить им значения, которые вы хотите. Например, в сле-
дующем фрагменте программы используется переменная $ для того,
чтобы задать сепаратор между элементами печати:

$, = '*';
@list = 1..10;
print @list; # Выведет 1*2*3*4*5*6*7*8*9*10

Оказывается, что переменная $ на самом деле воздействует на
все строки, а не только на те, которые выводятся на печать. Одна-
ко чаще всего вы будете использовать ее для того, чтобы изменить
значение, выводимое функцией print.

ФОРМАТИРОВАННЫЙ ВЫВОД ДАННЫХ ФУНКЦИЕЙ PRINTF
Perl имеет функции printf и sprintf, которые очень похожи на
соответствующие функции библиотеки времени выполнения языка С.
Они имеют следующий формат:

$result = printf([FileHandle] Format, List);
$result = sprintf(Format, List);

По умолчанию функция printf посылает форматированный выход
на стандартный выход STDIO, а функция sprintf возвращает формати-
рованную строку. В обоих случаях формат строк почти аналогичен
функциям языка С, исключая только отсутствие поддержки функциями
языка Perl спецификатора длины (*). Следующий фрагмент программы
иллюстрирует использование функций printf и sprintf.

$precision = 2;
$pi = 3.1415;
printf("%.2f\n", $pi); # выведет 3.14
printf("%.${precision}f", $pi); # выведет 3.14

ВЫЗОВ ВНЕШНИХ ПРОГРАММ ИЗ СКРИПТА НА ЯЗЫКЕ PERL
Будучи в известном смысле заменой скриптов shell, Perl обес-
печивает поддержку системного взаимодействия, включая вызов внеш-
них программ. В следующих разделах рассматривается несколько спо-
собов вызова внешних программ из скриптов Perl. Имейте, однако, в
виду, что позволяя скриптам выполнять системные команды, вы тем
самым открываете бреши в системе безопасности вашего узла. При-
держивайтесь общего правила не выполнять внешних команд из скрип-
та на языке Perl. Тем не менее, если вы вынуждены выполнять внеш-
ние команды из скрипта, то можете использовать для этих целей
встроенные функции system, exec или fork.

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
На протяжении этой главы вы познакомились с примерами фун-
кций для обработки строк. Многие из них основаны на концепции ре-
гулярных выражений. Как вы видите из следующих разделов, скрипты
языка Perl широко используют регулярные выражения для обработки
текста. Если регулярные выражения внове для вас, то не беспокой-
тесь. Спустя короткое время после того, как вы познакомитесь с
несколькими разделами этой главы, регулярные выражения станут для
вас просты и понятны.

ОБЗОР РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ
Регулярные выражения являются причудливым термином, возник-
шим в компьютерной науке и служащим для обозначения образца, сос-
тоящего из символов. Скрипты на языке Perl используют символьные
образцы просто для того, чтобы провести анализ входных данных,
расщепляя их на части. Часто скрипт может проанализировать вход-
ные данные, основываясь на пробелах, запятых, символах табуляции
и других разделителях. Но когда входные данные имеют произ-
вольный формат то лучше всего с такой задачей справляются регу-
лярные выражения.

СИНТАКСИС РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ
Для сокращения размеров регулярных выражений, Perl ис-
пользует специальные символы. Таблица 12.6 содержит список неко-
торых из символов, используемых скриптами языка Perl в регуляр-
ных выражениях.

Символ Описание
. Соответствует любому символу (за исключением
символа новой строки)
(..) Группирует последовательность элементов
+ Удовлетворяет предыдущему образцу один или
большее количество раз
? Удовлетворяет образцу нуль или один раз
* Соответствует образцу один или нуль раз
[...] Соответствует символу из заданного множества
[^...] Соответствует символу из множества, полученного
отрицанием
(...|...|...) Соответствует одной из альтернатив
^ Соответствует началу строки
$ Соответствует образцу в конце строки
{n, m} Соответствует образцу от n до m раз
{n} Соответствует образцу точно n раз
{n,} Соответствует образцу минимум n раз
\n\t etc. Соответствует знаку новой линии, символу
табуляции и т. д.
\b Соответствует на границе слова
\В Соответствует внутри границ слова
\d Соответствует цифре
\D Соответствует не цифре
\s Соответствует пробелу
\S Соответствует не пробелу
\w Соответствует букве или цифре
\W Соответствует символу, не являющемуся ни буквой,
ни цифрой

Табл. 12.6. Символы, используемые в регумрных выражениях

Perl помещает регулярные выражения (образцы, шаблоны) в слэ-
ши, т. е. в наклонные черточки, например, в виде /pattern/. Сле-
дующий фрагмент программы иллюстрирует регулярные выражения язы-
ка Perl:

# the following regular expressions are true if:
/ig/ # string contains 'ig'
/(b|d|f)ig/ # string contains 'big', 'dig' or 'fig'
/[0-9]+/ # string contains a number
/[A-Za-z][A-Za-a0-9_]*/ # string contains an identifier

Если эти выражения кажутся вам бессмысленными, не беспокой-
тесь. В этой главе мы собираемся рассмотреть несколько регуляр-
ных выражений. Сейчас просто запомните, что Perl помещает регу-
лярные выражения между двумя наклонными чертами-слэшами, как по-
казано выше.

ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ ДЛЯ ПОИСКА ПО КЛЮЧЕВЫМ
СЛОВАМ
Скрипты языка Perl используют регулярные выражения для того,
чтобы упростить сравнение строк. Для того чтобы проверить, содер-
жит ли строка заданный образец, скрипт может использовать регу-
лярные выражения следующим образом:

if ($str =~ /pattern/)

В данном случае регулярные выражения принимают значение <ис-
тинно>, если образец найден в строке ($str). Если строка по со-
держит образца, то выражение возвращает значение <ложно>. Напри-
мер, следующее выражение проверяет, содержит ли строка текст Web
Programming:

if ($str =~ /Web Programming/)

Для того, чтобы проверить полное совпадение, выражение дол-
жно привязать сравнение к началу и концу строки. Например, сле-
дующее выражение имеет значением величину <истинно>, если и
только если переменная $str принимает одно из трех значений:
<banana>, <bananana>) <banananana>:

($str =~ /^ba(na) {2,4}$/)

Аналогичным образом, следующее выражение истинно тогда и
только тогда, когда переменная $str содержит слово <the> и не яв-
ляется частью другого слова, такого как <their>.

($str =~ /\bthe\b/)

ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ ДЛЯ АНАЛИЗА ВХОДНЫХ ДАННЫХ
По мере усложнения ваших скриптов Perl возникнет много слу-
чаев, когда вы захотите узнать больше, чем просто проверить, сов-
падает ли образец со строкой или нет. Например, может потребо-
ваться, чтобы скрипт извлек определенное значение строки.
Используя символы группировки () внутри регулярного выражения,
скрипт может извлечь соответствующие образцу значения из строки и
сформировать из них список. Например, следующий фрагмент програм-
мы использует регулярные выражения для того, чтобы извлечь меся-
цы, дни и годы из списка:

$str = " January 1, 1997, ";
($m, $d, $y) = $str =~ /\s*(\S*)\s + (\d+)\D + (\d{4})/;

В этом случае можно прочитать регулярные выражения следую-
щим образом:

? Пропустить вначале любой специальный символ;
? записать все символы, не являющиеся специальными, в переменную $m
(переменная для обозначения месяцев);
? пропустить специальный символ;
? поместить все цифры в переменную $d (переменная для записи дней);
? пропустить все знаки, не являющиеся цифрами;
? записать четыре цифры в переменную $у (переменная для обозначения лет).

Perl поддерживает также другую форму сравнения с образцом,
использующую оператор (=~), который добавляет отрицание результа-
та: (!~). Этот оператор эквивалентен выражению !($str
=~/pattern/).

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ ДЛЯ ПОИСКА И ЗАМЕНЫ СТРОК
До сих пор вы использовали операторы, проверяющие на соот-
ветствие образцу. Оказывается, Perl поддерживает два других регу-
лярных выражения, которые модифицируют проверяемую строковую пе-
ременную. В записанной дальше инструкции Perl замещает часть
строки, которая соответствует образцу, на заданную строку:

$str =~ s/pattern/replacement/;

Например, следующая инструкция заменит слово <colour> на
<color>:

$str =~ s/\bcolour\b/color/;

Небольшая модификация позволяет заменить все слова <colour>
на <color>:

$str =~ s/\bcolour\b/color/g;

В данном случае g в конце выражения указывает языку Perl на
необходимость глобальной подстановки.

Используя суффикс i, можно задать выполнение поиска с учё-
том регистра. В противоположность простой проверке на соответ-
ствие образцу, следующее выражение осуществляет также и замену:

$str =~ tr/SearchList/ReplacementList/;

Например, замена всех символов нижнего регистра теми же сим-
волами верхнею регистра может быть осуществлена таким образом:

$str =~ tr/a-z/A-Z/; # меняет регистр, с нижнего на верхний

Проанализируйте сами следующий пример:

$letters = "abcde";
print "$letters\n" # Выведет abcde
$letters =~ tr/a-z/A-Z/;
print "$letters\n" # Выведет ABCDE

РЕЗЮМЕ
В этой главе рассмотрено введение в программирование на язы-
ке Perl. Используя рассмотренные здесь концепции, можно писать
сложные скрипты CGI на языке Perl. Следующая глава окажет вам по-
мощь в получении навыков в создании CGI-скриптов на языке Perl,
которые можно запустить на собственном сервере. Прежде чем следо-
вать далее, удостоверьтесь, что вы понимаете следующие ключевые
концепции:

? Perl представляет собой интерпретируемый язык программирования,
который используется программистами для написания скриптов для
Web и Internet.

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

? Perl является основным языком для написания CGI-программ для
Web и Internet, в первую очередь благодаря своей гибкости, ком-
пактному стилю и обеспечению высокой безопасности.

ВАЖНЕЙШИЕ WEB-УЗЛЫ С ИНФОРМАЦИЕЙ О PERL
Следующие узлы Web помогут отыскать информацию об интересую-
щих вас деталях относительно языка Pcrl, скриптов на нем, а так-
же специальной информации о ресурсах языка Perl 5 и его библиоте-
ках. Используйте эти Web-узлы в качестве отправной точки вашего
поиска.

http://www.shareware.com/top/Source-Code-table.html - SHAREWARE.COM
- самые популярные файлы с кодами программ.

http://www.inxpress.net:80/~moewes/computer/perl95.html - Perl для
Windows 95.

http://www.mit.edu:8001/perl/perlapi.html - PERLAPI

http://www.genome.wi.mit.edu:80/ftp/pub/software/WWW/cgi_docs.html -
CGI.pm - Библиотека Perl5.CGI

http://www.metronet.com/0/perlinfo/perl5/manual/perl.html - PERL

http://www.teleport.com/~rootbeer/perl.html - Ссылки для изучающих
Perl

Назад | Далее