От простого к сложному
Прежде чем приступить к
последовательному ознакомлению с не
знакомым для вас языком, должен оговориться
и сказать, что все примеры да и сам язык
описанию которого посвящена эта книга это
Perl версии 5.003 для операционной системы FreeBSD
версии 2.01. Существуют реализации этого
языка для операционных систем OS/2 , MS-DOS и Windows
NT но они немного отстают по возможностям от
оригинала, рожденного в недрах Unix.
Пример 1.
Введите в файл test1.pl следующие строки:
#!/usr/local/bin/perl
# Содержимое файла test1.pl
print "Наше Вам с кисточкой!\n";
А теперь подробно разберем каждую строку.
#!/usr/local/bin/perl
Данная строка должна быть первой в
любой Perl-программе. Она указывает
системному интерпретатору что данный файл -
это Perl-программа.
# Содержимое файла test1.pl
Эта строка называется комментарием. Она
всегда начинается символом '#' и
заканчивается таким объяснением что как
говорил великий Ходжа Насреддин "это
тонкий философский вопрос", а говоря
простым языком здесь можно писать все что
угодно. Даже пожелание руководству. Уж
здесь оно точно до него не дойдет.
print "Наше Вам с кисточкой!\n";
Самая последняя ну и конечно
главная. Она просто выводит на экран
надпись "Наше Вам с кисточкой!".
Здесь слово print - это команда "вывести".
Все что в кавычках - это символы, \n -
перевод
строки и ';' - признак конца команды. Он
обязателен. В одной строке может быть
несколько команд и все они должны
завершаться символом ';'. После него может
быть с
имвол '#' - это значит остаток строки
считается комментарием.
Над этой строкой автору пришлось
больше всего поломать голову так как в нее
постоянно
лезли какие
то странные "hello",
"hello all", "Построимся и спасемся",
"Строй наше спасение" и т. д. и т.п.
Если вы никогда не работали с
Perl,
то бьюсь на спор в 10$, что данная программа
сразу у вас
не заработает!
Не потому что она
не верна, а потому что "Нельзя объять
необъятное". Сразу, потом можно,
да и то
частями. Сначала сделайте ваш файл test1.pl
исполняемым. Для этого введите команду:
chmod +x test1.pl
Затем проверьте где у вас Perl. Для этого
введите:
which perl
Система вам выдаст что то вроде: /usr/bin/perl
Если:
perl: Command not found.
То тогда закройте книжку и ложитесь спать. У
вас просто нет Perl или он не установлен.
А мне
остается
послать вас к системному
администратору или к man (для переводчиков- man
сокращение от manual
а не то что вы подумали).
Теперь проверьте что бы строка 01
содержала то что выдала команда which. Если
совпало то введите:
test1.pl
и бьюсь на 50$, что и теперь программа не
заработает, так как правильней ввести:
./test1.pl
Если я проиграл, то не радуйтесь.
Да же если вам удалось запустить программу
как test1.pl
это значит,
что у вас будут
неприятности в будущем.
Пример 2.
Данная программа выводит на экран все ваши
секреты. А именно файл /etc/passwd.
#!/usr/local/bin/perl
open(PASS, "</etc/passwd") || die "Файл не найден!";
while(<PASS>)
{
print;
}
close(PASS);
Пояснения:
open(PASS, "</etc/passwd") || die "Файл не найден!";
"Открыть" файл, т.е. создать
указатель файла PASS, и в случае ошибки выдать
"Файл не найден!" и закончить программу.
while(<PASS>)
Читать по одной строке файла в переменную
по умолчанию $_.
{
Открыть блок операторов.
print;
Вывести на экран переменную по умолчанию $_
}
Конец блока.
close(PASS);
Закрыть файл. Этого можно и не делать, т. к.
файл автоматически закроется после
окончания
программы.
Результат работы этой программы
тот же что и команды cat /etc/passwd.
По экрану
пробежали непонятные строки но зато теперь
перед вами открыты горизонты Perl
программирования!
Все последующие примеры
будут развитием этой программы и она
превратится из гадкого утенка в
прекрасного лебедя (не генерала).
Пример 3.
Разделение полей.
#!/usr/local/bin/perl
open(PASS, "</etc/passwd") || die "Файл не найден!";
while(<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(<PASS>)
{
($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(<PASS>)
{
($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
-------------------------------------------------------------
Если вам интересно узнать как
работает эта программа, то переверните
страницу и начините свое
путешествие в
мире Perl. Желаю удачи!
|