Так сложилось, что я знаю как минимум двух человек, которые хотели бы выучить Perl. Специально для них я решил написать этот пост.
Оглавление:
- Часть 1: Типы переменных (вы читаете эту часть)
- Часть 2: Условные операторы и циклы
- Часть 3: Директива use strict, ссылки и функции
- Часть 4: Ввод/вывод, файлы, каталоги и глобы
Учиться будем на простых примерах из серии «вывести числа от 1 до 5» и тому подобное. Мне всегда нравилось учиться на примерах — это интереснее и быстрее, чем по книжкам или на семинарах. Также можете посмотреть посты этого блога, имеющие метку «Perl» — велика вероятность, что в них вы найдете еще примеры.
Я предполагаю, что в школе/институте вы изучали Pascal/Delphi, C или хотя бы Basic, и объяснять, что такое функция и циклы не требуется. Если это не так — ничего страшного, просто для того, чтобы во всем разобраться, вам придется потратить лишнее время на чтение Википедии. Если вы не знаете, как запустить bash-скрипт, или для чего в первой строке скрипта писать что-то вроде #!/bin/sh , придется немного погуглить , чтобы это выяснить.
Специально для тех, кого интересуют вопросы, «а правда ли, что Perl очень сложен», «а какие книжки по Perl можете посоветовать» и даже «а что, на нем еще пишут?», я написал Mini-FAQ по Perl , которое вы можете прочитать на HabraHabr. Здесь я приведу краткое его содержание:
- Perl — современный язык программирования, на котором пишут и будут писать еще очень долго.
- Perl, как и любой другой язык программирования, имеет свои достоинства, недостатки и области применения. Существует действительно большой класс задач, которые Perl решает на 5+.
- Синтаксис Perl не сложнее синтаксиса C++ или Java. В этом вы сможете убедиться, дочитав данный пост до конца.
- Существуют хорошие и при этом недорогие учебники по Perl. Также в сети вы без труда найдете сообщество perl-программистов, говорящих на вашем родном языке.
- Perl хорошо работает как под операционными системами семейства UNIX, так и под Windows.
Привет, %username%!
Итак, давайте уже напишем наш первый скрипт на Perl!
$name = shift ( ) ;
print ( «Hello, $name! n » ) ;
Запускаем скрипт:
$ . / 1 .pl afiskon
Hello, afiskon !
Тут все очень просто:
- Имена скалярных переменных (то есть не массивов и не хэшей, что это такое — см ниже) начинаются со знака доллара.
- Функция shift возвращает очередной аргумент скрипта. Другими словами первый вызов shift() возвращает первый аргумент, второй вызов — второй аргумент и так далее.
- Функция print() выводит строку, переданную в качестве аргумента.
- В строку можно подставлять значения переменных (см строку 4). Подробнее о строках — см далее.
Если пока не очень понятно — ничего страшного. Возможно, немного теории внесет чуть больше ясности.
Типы переменных
В Perl существует три основных типа переменных: скаляры (числа и строки), массивы — подобно тем, что используются в Pascal или C (иногда массивы еще называют векторами), и хэши (ассоциативные массивы).
Скаляры мы уже использовали в предыдущем примере. Вот еще несколько примеров задания скаляров.
$a = 123 ;
$b = — 7.496 ;
$c = 0xABC ; # равно 2748, да, это комментарий 🙂
$d = ( $a + $b ) / $c ;
$d *= $a ; # тоже самое, что $d = $d * $a;
$str1 = «hello» ;
$str2 = «$str1, world» ; # в $str2 записано ‘hello, world’
$str3 = $a . » n » . $str2 ;
$str4 = ‘$str1’ ; # в $str4 записано ‘$str1’, а не ‘hello’
Тут мы задаем положительные и отрицательные, целые и дробные числа, задаем число в шестнадцатеричной кодировке, складываем, умножаем и делим — все как в Си или Java. Кроме перечисленных операций Perl также поддерживает операцию возведения в степень:
Со строками все примерно так же, как в каком-нибудь PHP. Точка означает операцию конкатенации (то есть «склеивания» строк), если в строке содержатся имена переменных, на их место подставляются значения, с помощью обратного слэша можно вставлять символы новой строки (n), табуляции (t), кавычки («)сам обратный слэш (\) знак доллара безо всякой подстановки переменных ($) и многое другое. Если строка в одинарных кавычкахсимволы в ней трактуются «как есть»без подстановки переменных и тд.
Как и PHP