1. Арифметические $var3 = $var1 + $var2 $var3 = $var1 * $var2 $var3 = $var1 / $var2 $var3 = $var1 % $var2 Базовые операции языка
2. Поразрядные $var3 = $var1 & $var2 $var3 = $var1 | $var2 $var3 = $var1 ^ $var2 Базовые операции языка aba&ba|ba^b $a = 2; $b = 5; $c = $a ^ $b; $d = $a & $b; print $c | $d; 2 ^ 5 = 0010 ^ 0101 = 7 2 & 5 = 0010 & 0101 = 0 7 | 0 = 0111 | 0000 = 7
3. Логические $a && $b $a и $b ненулевые $a || $b $a или $b ненулевые $a != $b $a не равно $b $a == $b $a равно $b $a $b, $a >=$b - … Базовые операции языка
Конструирование выражений Выражение$a$b$c Результат ($a > $b) + $c ($a > $b) && !($c % 2)
Сокращенные операции Операция Сокращенно $a = $a * $b;$a *= $b; $a = $a | 4;$a |= 4; $b = $b + 2; $a = $a * $b $a *= ($b += 2) $a = $a + 1;$a++; $b = $b – 1;$b--;
Сокращенные операции Операция Сокращенно $a = $b; $b++;$a = $b++; $b++; $a = $b;$a = ++$b; ($b != 0) && ($a != 0)$b && $a ($b == 0) || ($a == 0)!$b || !$a
Операции над строками $a = Ivanov; $b = Petrov; print ($a == $b); print ($a + $b); print ($a + 4); Результат работы программы: 104. Все рассмотренные выше операции приравнивают все нецифровые строки к числу 0.
Операции над строками Обозначение АналогПример $a gt $b$a > $b20 gt 100 $a lt $b$a < $bAlex gt Bill $a eq $b$a == $bwww eq www $a ne $b$a != $b001 ne 0001 $a ge $b$a >= $bAlex ge Alex $a le $b$a <= $bBill le BillG
Операции над строками Операция ОбозначениеПример Конкатенация$c = $a. $b $a = Bill; $b = $a. G; print $b; Повторение$c = $a x $c $a =.; $b = $a x 3; print $b;
Строковые функции Функция ДействияПример lengthдлина строки$b = length($a); $a = test $b=4 substr Подстрока$b = substr($a, 1, 3) $a = substr($a, 3, 2) = 45 substr($a, 3) = 456 index Поиск подстроки$b = index($a, 23); $a = 1234 index($a, 23) = 1 chomp Удление \nchomp $a;
Пример Задача: преобразовать строки вида Часть 1=31 к виду Часть 1………………31 (с выравниванием): $str = ; $name = substr($str, 0, index($str, =)); $page = substr($str, index($str, =) + 1); $name = $name. (. x (30 – length($name))); print $name$page\n;
Условия $a = 0; if ($a) { print $a\n; } else { print Zero!; } $a = 4; if ($a) { print $a\n; } else { print Zero!; }
Группы условий $a = if ($a > (1024 * 1024 * 1024)) {print ($a / (1024 * 1024 * 1024)). Gb;} elsif ($a > (1024 * 1024)) {print ($a / (1024 * 1024)). Mb;} elsif ($a > 1024) {print ($a / 1024). Kb;} elsif ($a) {print $a bytes;} else {print Nothing;}
Сокращенные условия Для операций в одну строку используется сокращенный синтаксис: $a = ; $a *= -1 if $a ; $b = zero unless $b; print $b;
Массивы = (1, 2, 3); - массив известных = ; - ввод с клавиатуры (до = (3, test, $a, $b); - заполнение из переменных ($a, $b, $c) - обратное присвоение $var = $arr[0] – обращение к первому элементу $var = $arr[$k] – обращение к $k–му элементу ($k – переменная)
Циклы 1. Проход по всем элементам = (1,3,5,-2,7); foreach $k { print Square of $k is.($k * $k).\n; } Результат: Square of 1 is 1 Square of 3 is 9 Square of 5 is 25 Square of -2 is 4 Square of 7 is 49
Циклы 2. Цикл по условию: $val = ; $mul = $val - 1; while ($mul) { $val *= $mul; $mul--; } print $val;
Циклы 3. Общий вид: $val = ; for ( $mul = $val - 1; $mul; $mul--) { $val *= $mul; } print $val;
Циклы 4. Цикловые = (1,-4,5,-7,-9,10,101,32, -1); foreach $k { next if $k eq y\n); print Sqrt($k) =.sqrt($k).\n; }
Функции для работы с массивами Функция ДействияПример sort = = push Добавление элемента в = (1,2,3,4) 5); pop Удаление последнего = (1,2,3,4); $b = join = (1,2,3,4); $b = $b = 1:2:3:4;
Запуск системных = `cmd /c dir /b` - запуск команды и передача в массив результатов работы Обратная одинарная кавычка – над TAB Пример: нумерованный список файлов из текущей директории. $cmd = "cmd /c dir = `$cmd`; foreach { print $i++." ".$v; } Команда perl list.pl > list.txt скопирует результаты работы скрипта в файл list.txt
Работа с файлами Оператор ДействиеПример -eфайл существуетprint + if -e config.sys -sразмер файлаprint -s boot.ini -dфайл является каталогом if (-d $fn) {print DIR;} else {print (-s $fn);} Функция ДействиеПример renameпереименованиеrename($old, $new); unlinkудалениеunlink($fn); globсписок = glob(*.$ext);
Задания на самостоятельную работу Сортированный список файлов в виде HTML-таблицы Список файлов со значками типов Таблица с размерами файлов