Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документация, учебники по Perl.doc
Скачиваний:
3
Добавлен:
29.10.2018
Размер:
1.83 Mб
Скачать

От простого к сложному

Прежде чем приступить к последовательному ознакомлению с

не знакомым для вас языком, должен оговориться и сказать, что

все примеры да и сам язык описанию которого посвящена эта книга

это Perl версии 5.003 для операционной системы FreeBSD версии

2.01. Существуют реализации этого языка для операционных

систем OS/2 , MS-DOS и Windows NT но они немного отстают по

возможностям от оригинала, рожденного в недрах Юникса.

Пример 1 Введите в файл test1.pl следующие строки:

#!/usr/local/bin/perl

# Содержимое файла test1.pl

print "Наше Вам с кисточкой!\n";

А теперь подробно разберем каждую строку.

#!/usr/local/bin/perl

Данная строка должна быть первой в любой Пел-программе.

Она указыванет системному интерпретатору что данный файл - это Пел-программа.

# Содержимое файла test1.pl

Эта строка называется комментарием. Она всегда начинается

символом '#' и заканчивается таким объяснением что как говорил

великий Ходжа Насреддин "это тонкий филосовский

вопрос", а говоря простым языком здесь можно писать все что угодно.

Даже пожелание руководству. Уж здесь оно точно до него не

дойдет.

print "Наше Вам с кисточкой!\n";

Самая последняя ну и конечно главная. Она просто выводит

на экран надпись "Наше Вам с кисточкой!".

Здесь слово print - это команда "вывести". Все что в кавычках - это символы,

\n - перевод строки и ';' - признак конца команды. Он обязателен.

В одной строке может быть несколько команд и все они должны завершаться

символом ';'. После него может быть символ '#' - это значит остаток

строки считается комментарием.

Над этой строкой автору

пришлось больше всего поломать голову так как в нее постоянно

лезли какие то странные "hello", "hello all", "Построемся и спасемся",

"Строй наше спасение" и т.д и т.п.

Если вы никогда не работали с Пел, то бъюсь на спор в 10$, что данная

программа сразу у вас не заработает!

Не потому что она не верна, а потому что "Нельзя объять необъятное".

Сразу, потом можно, да и то частями.

Сначало сделайте ваш файл test1.pl исполняемым. Для этого введите

команду:

chmod +x test1.pl

Затем проверьте где у вас Пел. Для этого введите:

which perl

Система вам выдаст что то вроде: /usr/bin/perl

Если: perl: Command not found.

То тогда закройте книжку и ложитесь спать. У вас просто нет Пел или

он не установлен. А мне остается послать вас к системному администратору

или к man (для переводчиков- man сокращение от manual а не то что вы подумали).

Теперь проверьте что бы строка 01 содержала то что выдала команда which.

Если совпало то введите:

test1.pl

и бъсь на 50$ что и теперь программа не заработает, так как правильней

ввести:

./test1.pl

Если я проиграл, то не радуйтесь. Да же если вам удалось запустить программу

как test1.pl это значит, что у вас будут неприятности в будущем.

Пример 2 Данная программа выводит на экран все ваши секреты. А именно файл /etc/passwd.

#!/usr/local/bin/perl

open(PASS, ")

{

print;

}

close(PASS);

Пояснения:

open(PASS, ")

Читать по одной строке файла в переменную по умолчанию $_.

{

Открыть блок операторов.

print;

Вывести на экран переменную по умолчанию $_

}

Конец блока.

close(PASS);

Закрыть файл. Этого можно и не делать так-как файл автоматически

закроется после окончания программы.

Результат работы этой программы тот же что и команды cat /etc/passwd.

По экрану пробежали непонятные строки но зато теперь перед вами

открыты горизонты Пел программирования!

Все последующие примеры будут развитием этой программы и она

превратится из гадкого утенка в прекрасного лебедя (не генерала).

Пример 3 Разделенеие полей.

#!/usr/local/bin/perl

open(PASS, ")

{

($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');

print "$login \t $name\n";

}

close(PASS);

Пояснение:

($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');

Присвоить указанным переменным поля входной строки, считая разделителем символ ':'.

print "$login \t $name\n";

Вывести login - имя пользователя и его описание. Поля разделены символом '\t' - табуляции.

Пример 4 Вывести имена пользователей отсортированных по группам.

#!/usr/local/bin/perl

open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Файл не найден!";

while()

{

($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');

print "$login \t $gid \t $name\n";

}

close(PASS);

Поеснения:

open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Файл не найден!";

В данной строке весь фокус! Входным файлом для нашей программы

стал выход команды sort которая и отсортирует входные данные.

Форматированный вывод.

Ну а теперь напечатаем на экране все наши данные в удобной форме.

#!/usr/local/bin/perl

open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Файл не найден!";

while()

{

($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');

write(); # Форматированный ывод данных.

}

close(PASS);

exit 0; # Завершение программы

############ Описание формы вывода ##################

format STDOUT =

Пользователь: ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

$name

^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

$name

^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

$name

--------------------------------------------------------------------------------

Login:@<<<<<<<< Uid:@<<< Gid:@<<< Home dir:@<<<<<<<<<<<<<<<<<<<<<

$login, $uid, $gid, $home_dir

--------------------------------------------------------------------------------

. # Это последняя строка программы

Фрагмент результата:

Пользователь: Калужский ликеро-водочный завод. Лучшие водки и

настойки. Звонить только перед праздником Кострикову

Анатолию т. 2-23-06,,,

--------------------------------------------------------------------------------

Login:uucryst Uid:1055 Gid:66 Home dir:/var/spool/uucppublic/

--------------------------------------------------------------------------------

Пользователь: Торговый Дом Дилен,,,

--------------------------------------------------------------------------------

Login:uudilen Uid:1075 Gid:66 Home dir:/var/spool/uucppublic

--------------------------------------------------------------------------------

Если вам интересно узнать как работает эта программа, то переверните

страницу и начините свое путешествие в мире Пел.

Желаю удачи!