» Главная
eXcode.ru » Статьи » Perl » Общие
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 6





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




Источник: perl.far.ru

Прежде чем приступить к последовательному ознакомлению с не знакомым для вас языком, должен оговориться и сказать, что все примеры да и сам язык описанию которого посвящена эта книга это Perl версии 5.003 для операционной системы FreeBSD версии 2.01. Существуют реализации этого языка для операционных систем OS/2 , MS-DOS и Windows NT но они немного отстают по возможностям от оригинала, рожденного в недрах Юникса.

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


#!/usr/local/bin/perl
# Содержимое файла test1.pl
print "Наше Вам с кисточкой! ";


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


#!/usr/local/bin/perl


Данная строка должна быть первой в любой Перл-программе. Она указыванет системному интерпретатору что данный файл - это Перл-программа, а Веб-серверу - где искать интерпретатор Перл.


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


Эта строка называется комментарием. Она всегда начинается символом ′#′ и заканчивается таким объяснением, что как говорил великий Ходжа Насреддин "это тонкий филосовский вопрос", а говоря простым языком здесь можно писать все что угодно. Даже пожелание руководству. Уж здесь оно точно до него не дойдет.


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


Самая последняя ну и конечно главная. Она просто выводит на экран надпись "Наше Вам с кисточкой!".

Здесь слово print - это команда "вывести". Все что в кавычках - это символы, - перевод строки и ′;′ - признак конца команды. Он обязателен. В одной строке может быть несколько команд и все они должны завершаться символом ′;′. После него может быть символ ′#′ - это значит остаток строки считается комментарием.

Над этой строкой автору пришлось больше всего поломать голову так как в нее постоянно лезли какие то странные "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 $name ";
}
close(PASS);


Пояснение:


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


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


print "$login $name ";


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

Пример 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 $gid $name ";
}
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
----------------------------------------------------------------------

Если вам интересно узнать как работает эта программа, то переверните страницу и начините свое путешествие в мире Перл. Желаю удачи!
К началу статьи





Добавил: LedWormДата публикации: 2005-07-03 19:08:47
Рейтинг статьи:3.00 [Голосов 5]Кол-во просмотров: 8158

Комментарии читателей

Всего комментариев: 0
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Каким способом вы подключены к интернету
Dial-Up
26% (59)
ISDN
1% (2)
Выделенная линия
27% (61)
ADSL
32% (71)
Спутниковый интернет
2% (5)
GPRS-интернет
8% (17)
Другое
4% (9)

Проголосовало: 224
10 июня. Запускали малошумяший усилитель. Регистрирует импульсные помехи каждые 8 секунд. 11 июня. Анализировали спектр помех. Hашли источник. Это радар на городском аэродроме. 12 июня. Тестировали новые компьютеры. Фурье- и вейвлет преобразования идут на ура. Квейк тоже не тормозит. 13 июня. Тестировали мониторы. Через 3 минуты появился новый бот. Валили его втроем. Hа седьмой минуте забили окончательно. Прибежал шеф. Был очень лаконичен и сыпал яркими образами. Болят уши. Грустно. 14 июня. Экранировали усилитель. Заземляли. Заземлили все, что можно. Hе помогает. Спирт тоже. С радаром надо кончать. 15 июня. Думали. Паяли схему. 18 июня. Утро. Включили усилитель. Давили радар новой схемой. Подбирали волну, фазу и форму импульса. Подавили. Помех на усилителе больше нет. Обед. Hа нас чуть не сел первый самолет. Вечер. Самолеты идут косяками. Выключили схему. За проходной ждали пилоты. Крепкие ребята с хорошей реакцией. Охрана нас отбила. Потом добавила. 19-22 июня. Душевные беседы с особистом. 23 июня. Приехали военные. Забрали схему. Очень хвалили. Потом пугали. Мы обещали молчать. К вечеру пришел журналист. Hапоили его и завели на технический этаж. Оттуда еще никто быстро не выходил. Плутают как минимум сутки. 26 июня. С утра поддались боту в Квейк. Минут двадцать строили из себя мясо. Шеф пришел от себя довольный. Об увольнении уже нет и речи. Журналист, где-то голосит, но его надежно глушит вентиляция. 27 июня. Шеф на коне. Мы трое отдыхаем. Разгромный счет. Обидно. Анализировали причину неудач. Вечер. Искали журналиста. Остались на ночную смену. Hашли. Кидается гайками. Смеется и что-то пишет на своем ноутбуке. Оказывается, у него радиодоступ в Интернет. Завидую. 28 июня. Увы, у всех у нас плохая реакция. Руки на клавиатуре не успевают. Собирали манипуляторы с управлением от биотоков мозга. 29 июня. Отлаживали манипуляторы. Оказалось, реагируют на подсознательные образы. У всех синяки. Снизили чуствительность входных каскадов. Помогло. 30 июня. Убрали манипуляторы. Hеспортивно и чревато увольнением. Приспособили их в горячую камеру, где работаем с радиоактивностью. Удобно, быстро. Остается больше времени на компьютеры. 3 июля. Приходил директор. Забрал манипуляторы. Просил сделать еще. Весь день пытались вспомнить управляющую схему. Hе сумели. Курево не то. Спирта нет. Шеф опять на коне. В корпусе уже ходят легенды про неизвестного, ворующего еду и спирт. 4 июля. Приходил Вася. Бывший сотрудник. Теперь крутой. Хвастается GPS. Хам. Поспорили на его джип, что GPS ему не поможет. Hе верит. 5 июля Готовились к спору. Окна джипа закрашены. Вася готов. Смеется. Мы тоже готовы. Hашли подходящий кабель для новой схемки. Главное, чтобы выдержала подстанция. 6 июля. Подстанция продержалась до обеда. Джип застрял в болоте километрах на 120 от города. Вася удивлен. Считал, что он посреди города. Мы рады. 7 июля. Уже не рады. Схемы нет. Прибора нет. Компьютеров нет. Заначенной бутыли тоже нет. Комнаты опечатаны. 8-20 июля. Сидим в КПЗ. Иногда встречи с особистом. Читаем в газетах о происшествиях с судами и самолетами, потерявшими ориентацию. 21 июля. Виделись с шефом. Говорит тихо. Hервничает. Дергается глаз. Хочет к маме. Hичего не помнит. 22 июля. Приходили военные. Сильно пугали. Hемного хвалили. Просили работать на них. За такие деньги - и работать? Aвгуст. Мы были неправы. Hадо было соглашаться. Теперь поздно. Осваиваем пилы и топоры. Спирт из местной древесины плохой. Работа идет медленно. Hеэффективно. Hадо что-то делать. Так, чтобы деревья сразу под корень, и ветки долой... Cентябрь. Сделали. Сидим в карцере. Говорят, разовый выруб пяти гектаров леса был заметен километров за 20... Жаль, установка тоже сгорела. Конвой косится и исподтишка бьет по почкам. Зря. Задеть казарму и поселок мы не хотели. Грустно. Ждем особиста и военных... SOS
Рейтинг: 8.1/10 (11)
Посмотреть все анекдоты