|
РћС‚ простого Рє сложному Прежде чем приступить Рє последовательному ознакомлению СЃ РЅРµ знакомым для вас языком, должен оговориться Рё сказать, что РІСЃРµ примеры РґР° Рё сам язык описанию которого посвящена эта РєРЅРёРіР° это Perl версии 5.003 для операционной системы FreeBSD версии 2.01. Существуют реализации этого языка для операционных систем OS/2 , MS-DOS Рё Windows NT РЅРѕ РѕРЅРё немного отстают РїРѕ возможностям РѕС‚ оригинала, рожденного РІ недрах Unix. Пример 1. #!/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.
#!/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 =
Пользователь: ^
Фрагмент результата: Пользователь: Калужский ликероводочный завод. Лучшие водки и настойки. Звонить только перед праздником Кострикову Анатолию т. 2-23-06,,,
----------------------------------------------------------------
Пользователь: Торговый Дом Дилен,,,
---------------------------------------------------------------
Если вам интересно узнать как работает эта программа, то переверните страницу и начините свое путешествие в мире Perl. Желаю удачи!
|