div.main {margin-left: 20pt; margin-right: 20pt}Пёрл для чайников. Глава 1 Все нижесказанное ни в
коей мере не претендует на полноту и достоверность.
Заранее хочу
предупредить вас, что эта статья не сделает из вас супер PERL программиста, но
она даст вам некоторые необходимые начальные сведения, которые помогут вам в
дальнейшем изучении этого интереснейшего языка программирования.
Эту статью я решил
написать, после того как узнал насколько сложно "врубиться" во всё, даже если у
вас есть под рукой какое либо пособие по PERL. Везде, уже в самом начале,
начинают ссылаться на какие-то загадочные термины и команды, а вам остаётся
только удивлённо хлопать глазами, или (если вы всё же что-то поняли) заставить
эти программы работать (не "как надо", а вообще!). Эту статью можно было бы
назвать "PERL для чайников", если бы она охватывала весь материал, но здесь я
ставлю перед собой цель дать вам лишь необходимые начальные понятия, и так
сказать "подготовить к дальнейшим сражениям":). Хотя вполне возможно, что в
дальнейшем, "по просьбам трудящихся", эта небольшая статья разрастётся в нечто
большее.
Итак...
начинаем!
Для начала сообщу
вам, что PERL необходимо установить на ваш компьютер. Эту, казалось бы, простую
операцию некоторые мои знакомые начисто пропускали, а после, написав простенькую
программу, долго пытались её запустить... ;) Наиболее доступный пакет PERL (на
мой взгляд) - это ActivePerl, хотя, этот пакет ориентирован на пользователей
Windows, а если у вас UNIX, то можно скачать что нибудь родное с www.perl.com.
Так или иначе, вы достанете и поставите себе perl (если уже этого не сделали).
Так вот: у вас появится новая папочка "perl", но это вовсе не значит, что все
проги нужно помещать именно туда :) Perl, там сидящий, лишь исполняет все ваши
гениальные творения с расширением *.pl , а уж где они сами находятся - одному
юзеру известно :) (справедливо для пользователей windows с установленным пакетом
ActivePerl, т.к. он ассоциирует файлы *.pl).
Т.к. как эта статья
рассчитана в первую очередь на пользователей windows, то считаю себя обязанным
рассказать вам, что для программ, исполняемых в этой операционной системе вовсе
не обязательно начинать каждую программу со строки:
#!/usr/bin/perl
Всё дело в том, что
язык этот создавался на базе ОС UNIX, а эту строку нам пытаются передать в
"наследство" от их операционки. Однако вам следует помнить, что на сервере (если
вы решите скинуть туда свои проги) может стоять и UNIX.
Теперь немного о
методе написания. Советую вам для начала использовать простой блокнот, чтобы
запомнить все команды и синтаксис программирования. В дальнейшем, можно
использовать какой нибудь редактор, но это уже не спортивно:), и уж тем более
нежелательно для тех, кто только знакомится с этим языком программирования, да и
программированием вообще.
Практически все
руководства по этому языку начинаются с самой простой программы, которая
выглядит примерно так:
print
("hello, WORLD!n");
Некоторые из вас
уже, наверное, скопировали приведенную программу в свой файл и заметили, что она
быстренько открывается и также быстро закрывается. Это связанно с тем, что
программа есть программа, и после того как она выполнится - сразу же закроется,
поэтому добавьте к программе ещё одну строку с следующим
содержанием:
<>;
В итоге всё это
примет следующий вид:
print
("hello, WORLD!n"); <>;
... Не так уж и
просто выглядит для непосвященного... Даже немного пугающе... Но это только для
непосвященных, на самом деле всё - проще некуда! :) Не верится? Сейчас докажу.
Во-первых, вам нужно узнать, что print - это команда, которая выводит
информацию на стандартный вывод STDOUT (STanDart OUT или, проще говоря - вывод
на монитор). Во-вторых, непонятность в виде n - это переход на новую строку
(newline), но не программы, как могли бы испугаться некоторые, а информации на
экране, т.е. если бы вы продолжили бы текст, заключенный в кавычки, то после
этого символа он был бы напечатан с новой строки. А если вам понадобилось бы в
самом тексте использовать обратный слеш (шелс:), то перед ним надо поставить еще
один шелс. Например:
print "a"; #Команда, после которой Perl #выведет сигнал на SPICER print "\a"; #Perl просто выведет на экран a
Затем хочу вас
обрадовать: скобки нафиг не нужны:) Их использование зависит целиком от вашего
настроения, хотя в мануалах говорят, что это якобы помогает выделить текст в
программе. В общем - кому как больше нравится... Как вы уже наверно
догадались - кавычки нужны для заключения в них текста, так что осталось два
непонятных пунктика. Но перед тем как остановится на них, считаю необходимым
объяснить вам какая бывает информация в Perl. Фундаментальной единицей
информации в Perl является скаляр (scalar), т.е. отдельное значение, хранящееся
в отдельной переменной.
$a = "hello,
world!"; #Присвоить переменной $a некий текст $b = 777; #Присвоить переменной
$b некое число
В этих переменных
хранятся строки, числа и ссылки. При этом необходимо понимать разницу между
числами как таковыми и числами, содержащимися в строке.
$abc =
"123"; #Число в строке $123 = 123; #Число как таковое
Если вам нужно для
вычислений число, то просто не ставьте двойных кавычек.
Точка с запятой в
конце каждой строки - это собственно... конец строки, из чего следует, что вы
можете написать всю программу в одну строку, но нам что - строк жалко что ли:)
Из выше сказанного есть исключение: знак # говорит о том, что всё, что есть в
строке после него - это комментарий, и к программе уже не относится. Знак
ромб <> - это по умолчанию <STDIN> или, говоря понятным языком -
стандартный ввод с монитора (разъясняю: на мониторе появляется запрос, а вводите
вы конечно же через клаву. Потом нажимаете ентер и введенное значение уже в
переменной Perl, если она была задана). Вся хитрость добавления этого ромба в
нашем случае в том, что он будет запрашивать у вас этот ввод, пока вы не нажмете
кнопку "enter", а так как в программе не указанно, что делать с этим вводом, то
perl о нём просто забудет и станет считать нашу программку завершенной. И
врезультате выполнения этой программы мы с вами увидим на своих мониторах текст
Hello, world! .
Теперь немного
усложним нашу программку:
print "enter
your name: "; $name = <>; print "hello $name!"; <>;
Вам следует уяснить,
что программы выполняются построчно, т.е. сначала первая строка, после неё
вторая и т.д..
Итак, в первой
строке мы выводим предложение ввести имя пользователя. Во второй строке мы его
считываем в переменную $name. $name - это, как уже говорилось, скалярная
переменная Perl, которая начинается знаком доллара. Забегая вперёд, скажу вам,
что кроме переменных, начинающихся с доллара, бывают также массивы (@массив),
хэши (%хеш), и ещё несколько видов, о которых пока рано рассказывать. Между
переменной и ромбом стоит равенство, это значит, что мы присваиваем переменной
результат запроса. В третьей строке мы выводим слово hello, а после него выводим
то, что хранилось в переменной $name. В нашем случае это имя, которое мы просили
ввести.
Сделаем ещё одно
отвлечение, в котором я расскажу вам, что можно делать с переменными... С ними
можно делать ВСЁ! И это не преувеличение. Например, возможно
такое:
$a = 3;
$b = 4; $c = $a+$b; #Сложить две переменные и #присвоить их
третьей print $c; # Вывести получившееся число print $a+$b; # тоже самое,
только без # привлечения третьей переменной
Надеюсь с этим всё
понятно... А пока до некоторых доходит, мы напишем программку, которая выполняет
команды ДОС dir. Для тех кто не знает - dir - команда выводящая на экран
содержимое директории в которой вы находитесь.
$dos =
`dir`; print $dos; <>;
Эта программка
считывает в переменную $dos результат выполнения команды dir, которая заключена
в обратные кавычки, (если бы это были простые кавычки, то получилась бы не
команда, а просто слово) после чего выводит на монитор этот самый
результат.
Теперь так сказать
вернёмся к нашим баранам, вернее пока лишь к барашкам:) Мы научились выводить на
экран необходимый нам текст, получать информацию от пользователя, а так же
узнали, что ДОС команды в обратных кавычках будут выполняться как ДОС команды:)
Самое время написать программку, которая будет запрашивать не что иное, как эти
самые команды:
print
"enter comand: "; chmod($com = <>); print
`$com`; <>;
Из соображений
безопасности крайне не рекомендую вводить команду FORMAT, догадайтесь почему:)
Из новшеств нужно выделить появление команды chmod(). Эта команда убирает из
информации, которую мы получаем в запросе знак новой строки n, который есть там
по умолчанию. То, что находится во второй строке - это сокращенная запись двух
строк:
$com =
<>; #Считать в $com chmod ($com); #Убрать всё
лишнее
Выгадываем мы этим
всего несколько символов, но ведь всё равно приятно:)
На этом
считаю, что первые шаги вы прошли и готовы продолжить тернистый путь изучения
Perl.
NS
|