Тут нада чота умное напейсать! Шоб сказал, как отрезал! Но чота ничо не приходит вголову, сцуко (( :D
Изучающий и использующий Perl испытывает постоянный оргазм, сцыт кипятком и блюёт радугой.
читать дальше
Переменные там называются $var - всегда с баксом. Могут встречаться прямо в тексте для печати. Если текст в двойных кавычках, Перл их видит и заменяет, прямо как bash, а если в одинарных, то нет
print "text$vartext"; заменяет
print 'text$vartext'; - не заменяет. Также можно экранировать бакс \$ если нужно вставить его в текст
Перл должен сам определить конец переменной, для верности можно записать так: "${var}"
Числа можно разделять подчёркиваниями для удобства чтения: 1_2_3 = 123
есть спец.функция chomp() для удаления символа \n; Всякие экранированные символы \n \t пишутся как в С и спизжены оттуда.
Операторы заканчиваются точкой с запятой, как в С. Все операции сравнения == !=, автоинкремента ++ -- и т.д. - тоже как в С - но только для числовых переменных. Переменная может хранить строку, как одно целое, не массив байтов, как в С. Строки и переменные со значением строка сравниваются через операции eq ne gt le и т.д.
фишка "$var+=1;" тут тоже работает.
есть операция возведения в степень **
Массивы обозначаются как @arr. Есть операции добавления и извлечения в конец массива (push,pop) и в начало (shift, unshift). Есть операции reverse & sort
индекс массива всегда с нуля. @arr[-1] - последний элемент. @arr[-2] - предпоследний.
Цикл for такой же, как в С, есть ещё цикл foreach
Вместо break & contunue операторы last & next. Есть ещё оператор redo - перемещает в начало цикла.
есть ещё if else (elsif) while и unless. Фигурные скобки блоков опускать нельзя за исключегием специального случая:
if($a==1){exit 1} можно записывать как exit 1 if($a==1); а можно даже exit 1 if $flag; - круглые скобки можно опускать, если они не меняют смысл выражения.
со всякими for while unless аналогичную херню можно вытворять.
Каждый блок { } может иметь метку и на него можно переходить. (но не на каждую строку)
Есть специальные переменные $#arr - кол-во элементов в массиве
$" - разделитель списка эл-тов массива при печати, $_ используется по умолчанию в foreach, print и ещё где-то
@_ - список параметров функции на время вызова. Первый параметр функции хранится в элементе $_[0], второй – в $_[1] и т.д. ($_ это ДРУГОЕ!)
наверняка ещё какие-то есть "переменные по умолчанию", я до них пока не дошёл.
Вызов процедур и функций можно как $a=b(); а можно и как &b; &b это также результат, можно написать $a=$x + &b; эквивалентно $a=$x+b();
функции возвращают последнее вычисленное значение. Или можно использовать return.
Все переменные по умолчанию - глобальные. Можно сделать их локальными, если первое появление предварять словом my: my $var, my @arr и т.д.
Если использовать директиву use strict; применение my становится обязательным.
Имя программы хранится в переменной $0
Есть хэши - это список пар ключ-значение. Ключ должен быть уникальным. Ну, например, если в С и С++ IP-адреса и имена хостов приходится хранить в массиве и при поиске перебирать весь массив, то здесь ты хранишь их в хэше. И имена и адреса уникальны, поэтому, допустим, адрес это ключ, а хост значение. Тогда ты пишешь что-то вроде $host={$ip_addr} и комп САМ тебе выдаст имя хоста по адресу, если оно есть, и undef, если его нет.
Хэш можно преобразовать в простой список и наоборот. Чтобы в этом списке не гадать, что ключ, а что значение, используется оператор => (то же самое, что и запятая)
Есть логические операции && || (and or) и мягкое или //, которое срабатывает, если результат первого операнда не определён или никогда не инициализировался.
Есть операции побитового сдвига, как в С, С++
Модули - это готовые отлаженные куски кода, чтобы не изобретать велосипед. Их очень много, и знание Перл подразумевает именно знание модулей. Даже больше - можно знать модули и не знать Перл, а юзать его согласно примерам использования модулей. Есть модули для работы с файлами (функции basename, dirname и т.д.), модуль CGI для генерации HTML-страниц, модуль DBI - для работы с базами данных. По нему есть отдельная книга (может, толще, чем по Перлу гагага)
В Перле есть объектно-ориентированная хуета. Некоторые модули написаны в ОО-стиле, там используются объекты и методы - функции по-нашему, но вызываются они не &func, а что-то вроде MyObj->func();
читать дальше
Переменные там называются $var - всегда с баксом. Могут встречаться прямо в тексте для печати. Если текст в двойных кавычках, Перл их видит и заменяет, прямо как bash, а если в одинарных, то нет
print "text$vartext"; заменяет
print 'text$vartext'; - не заменяет. Также можно экранировать бакс \$ если нужно вставить его в текст
Перл должен сам определить конец переменной, для верности можно записать так: "${var}"
Числа можно разделять подчёркиваниями для удобства чтения: 1_2_3 = 123
есть спец.функция chomp() для удаления символа \n; Всякие экранированные символы \n \t пишутся как в С и спизжены оттуда.
Операторы заканчиваются точкой с запятой, как в С. Все операции сравнения == !=, автоинкремента ++ -- и т.д. - тоже как в С - но только для числовых переменных. Переменная может хранить строку, как одно целое, не массив байтов, как в С. Строки и переменные со значением строка сравниваются через операции eq ne gt le и т.д.
фишка "$var+=1;" тут тоже работает.
есть операция возведения в степень **
Массивы обозначаются как @arr. Есть операции добавления и извлечения в конец массива (push,pop) и в начало (shift, unshift). Есть операции reverse & sort
индекс массива всегда с нуля. @arr[-1] - последний элемент. @arr[-2] - предпоследний.
Цикл for такой же, как в С, есть ещё цикл foreach
Вместо break & contunue операторы last & next. Есть ещё оператор redo - перемещает в начало цикла.
есть ещё if else (elsif) while и unless. Фигурные скобки блоков опускать нельзя за исключегием специального случая:
if($a==1){exit 1} можно записывать как exit 1 if($a==1); а можно даже exit 1 if $flag; - круглые скобки можно опускать, если они не меняют смысл выражения.
со всякими for while unless аналогичную херню можно вытворять.
Каждый блок { } может иметь метку и на него можно переходить. (но не на каждую строку)
Есть специальные переменные $#arr - кол-во элементов в массиве
$" - разделитель списка эл-тов массива при печати, $_ используется по умолчанию в foreach, print и ещё где-то
@_ - список параметров функции на время вызова. Первый параметр функции хранится в элементе $_[0], второй – в $_[1] и т.д. ($_ это ДРУГОЕ!)
наверняка ещё какие-то есть "переменные по умолчанию", я до них пока не дошёл.
Вызов процедур и функций можно как $a=b(); а можно и как &b; &b это также результат, можно написать $a=$x + &b; эквивалентно $a=$x+b();
функции возвращают последнее вычисленное значение. Или можно использовать return.
Все переменные по умолчанию - глобальные. Можно сделать их локальными, если первое появление предварять словом my: my $var, my @arr и т.д.
Если использовать директиву use strict; применение my становится обязательным.
Имя программы хранится в переменной $0
Есть хэши - это список пар ключ-значение. Ключ должен быть уникальным. Ну, например, если в С и С++ IP-адреса и имена хостов приходится хранить в массиве и при поиске перебирать весь массив, то здесь ты хранишь их в хэше. И имена и адреса уникальны, поэтому, допустим, адрес это ключ, а хост значение. Тогда ты пишешь что-то вроде $host={$ip_addr} и комп САМ тебе выдаст имя хоста по адресу, если оно есть, и undef, если его нет.
Хэш можно преобразовать в простой список и наоборот. Чтобы в этом списке не гадать, что ключ, а что значение, используется оператор => (то же самое, что и запятая)
Есть логические операции && || (and or) и мягкое или //, которое срабатывает, если результат первого операнда не определён или никогда не инициализировался.
Есть операции побитового сдвига, как в С, С++
Модули - это готовые отлаженные куски кода, чтобы не изобретать велосипед. Их очень много, и знание Перл подразумевает именно знание модулей. Даже больше - можно знать модули и не знать Перл, а юзать его согласно примерам использования модулей. Есть модули для работы с файлами (функции basename, dirname и т.д.), модуль CGI для генерации HTML-страниц, модуль DBI - для работы с базами данных. По нему есть отдельная книга (может, толще, чем по Перлу гагага)
В Перле есть объектно-ориентированная хуета. Некоторые модули написаны в ОО-стиле, там используются объекты и методы - функции по-нашему, но вызываются они не &func, а что-то вроде MyObj->func();
@темы: программирование, Linux, книжки