"Введение в Perl" - читать интересную книгу автора (Маслов Владимир Викторович)* От простого к сложному *Прежде чем приступить к последовательному ознакомлению с не знакомым для вас языком, должен оговориться и сказать, что все примеры да и сам язык описанию которого посвящена эта книга это Perl версии 5.003 для операционной системы FreeBSD версии 2.01. Существуют реализации этого языка для операционных систем OS/2 , MS-DOS и Windows NT но они немного отстают по возможностям от оригинала, рожденного в недрах Юникса. #!/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. То тогда закройте книжку и ложитесь спать. У вас просто нет Перл или он не установлен. А мне остается послать вас к системному администратору или к Теперь проверьте что бы строка 01 содержала то что выдала команда which. Если совпало то введите: test1.pl и бъюсь на 50$ что и теперь программа не заработает, так как правильней ввести: ./test1.pl Если я проиграл, то не радуйтесь. Да же если вам удалось запустить программу как test1.pl это значит, что у вас будут неприятности в будущем. #!/usr/local/bin/perl open(PASS, «lt;/etc/passwd») || die «Файл не найден!»; while(lt;PASSgt;) { print; } close(PASS); Пояснения: open(PASS, «lt;/etc/passwd») || die «Файл не найден!»; «Открыть» файл т.е. создать указатель файла PASS и в случае ошибки выдать «Файл не найден!» и закончить программу. while(lt;PASSgt;) Читать по одной строке файла в переменную по умолчанию $_. { Открыть блок операторов. print; Вывести на экран переменную по умолчанию $_ } Конец блока. close(PASS); Закрыть файл. Этого можно и не делать так-как файл автоматически закроется после окончания программы. Результат работы этой программы тот же что и команды cat /etc/passwd. По экрану пробежали непонятные строки но зато теперь перед вами открыты горизонты Перл программирования! Все последующие примеры будут развитием этой программы и она превратится из гадкого утенка в прекрасного лебедя (не генерала). #!/usr/local/bin/perl open(PASS, «lt;/etc/passwd») || die «Файл не найден!»; while(lt;PASSgt;) { ($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' – табуляции. #!/usr/local/bin/perl open(PASS, «sort -n -t : +3 -4 +0 /etc/passwd|») || die «Файл не найден!»; while(lt;PASSgt;) { ($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(lt;PASSgt;) { ($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':'); write(); # Форматированный ывод данных. } close(PASS); exit 0; # Завершение программы ############ Описание формы вывода ################## format STDOUT = Пользователь: ^lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt; $name ^lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt; $name ^lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt; $name Login:@lt;lt;lt;lt;lt;lt;lt;lt; Uid:@lt;lt;lt; Gid:@lt;lt;lt; Home dir:@lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt; $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 Если вам интересно узнать как работает эта программа, то переверните страницу и начините свое путешествие в мире Перл. Желаю удачи! |
|
|