От простого к сложному.
Прежде чем приступить к последовательному ознакомлению
с не знакомым для вас языком, должен оговориться и сказать, что
все примеры да и сам язык описанию которого посвящена эта книга
это 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, "</etc/passwd")||die"Файл не найден!";
while(<PASS>)
{
print;
}
close(PASS);
Пояснения:
open(PASS, "</etc/passwd")||die"Файл не найден!";
"Открыть" файл т.е. создать указатель файла PASS и
в случае ошибки выдать "Файл не найден!" и закончить программу.
while(<PASS>)
Читать по одной строке файла в переменную по умолчанию $_.
{
Открыть блок операторов.
print;
Вывести на экран переменную по умолчанию $_
}
Конец блока.
close(PASS);
Закрыть файл. Этого можно и не делать так-как файл автоматически
закроется после окончания программы.
Результат работы этой программы тот же что и команды cat /etc/passwd.
По экрану пробежали непонятные строки но зато теперь перед вами
открыты горизонты Пел программирования!
Все последующие примеры будут развитием этой программы и она
превратится из гадкого утенка в прекрасного лебедя (не генерала).
Пример 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:66Home dir:/var/spool/uucppublic/
---------------------------------------------------------------
Пользователь: Торговый Дом Дилен,,,
---------------------------------------------------------------
Login:uudilen Uid:1075 Gid:66Home dir:/var/spool/uucppublic
----------------------------------------------------------------
Если вам интересно узнать как работает эта программа, то переверните
страницу и начините свое путешествие в мире Пел.
Желаю удачи!