Введение в Perl. От простого к сложному.
От простого к сложному
Прежде чем приступить к
последовательному ознакомлению с
не знакомым для вас языком, должен
оговориться и сказать, что все
примеры да и сам язык описанию
которого посвящена эта книга это 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 $namen";
}
close(PASS);
Пояснение:
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
Присвоить указанным переменным
поля входной строки, считая
разделителем символ ':'.
print "$login t $namen";
Вывести 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 $namen";
}
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. Желаю удачи!
[Содержание] [Вперед]
|