|
ример пробелов.
Пример:
$s = "hello"; # Исходная строка
$s =~ tr/a-z/A-Z/; # Заменить малые буквы на большие. Результат
# 'HELLO'
$s = 'Hel....lo';
$s =~ tr/a-zA-z/_/c; # Заменить все не буквы на '_'
# Результат 'Hel____lo'
$s =~ tr/_/ /s; # Заменить '_' на ' ' и сжать.
# Результат 'Hel lo'
$s =~ tr/a-zA-Z /a-zA-Z/d; # Удалить все не буквы. Результат 'Hello'
Если один и тот же символ несколько раз указан в таблице1 то применяется
только первая замена.
Операторы ввода-вывода.
В Пел существует несколько операторов ввода-вывода. Первый это скобки
из символа '`' - акцента. Строка в этих скобках воспринимается как
системная команда и результат ее действия возвращается как "псевдо"
литерал. В скалярном контексте это строка содержащая весь результат,
а в списковом - список элементы которого - строки результата.
Статус выполненой команды хранится в переменной $? .
Следующая команда ввода вывода выгледит как '<файл>'.
Вычисление <файл> приводит к чтению строки из файла. Обратите внимание
что 'файл' здесь не имя файла а указатель файла который создается
функцией open(). В скалярном контексте читается одна строка вместе
с символом '\n' - перевода строки, а в списковом весь файл читается
в список элементы которого суть строки файла.
В случае обнаружения конца файла результат оператора не определен
и воспринимается как false. Если не указана переменная результата
то по умолчанию это $_. Указатель файла по умолчанию STDIN -
стандартный ввод.
Пример:
while(<>) { print; }; # Прочитать и вывести весь файл STDIN
У оператора '<>' есть одна отличительная особенность. Если в командной
строке нет никаких аргументов то читается стандартный ввод, если
есть аргументы то они считаются именами файлов которые последовательно
читаются.
Если в угловых скобках записана переменная то содержимое этой
переменной считается именем указателя файла или ссылкой на
указатель файла. Если такого указателя не существует то содержимое
переменной воспринимается как шаблон имен файлов и результат
- имена файлов на диске подходящих по шаблону.
Пример:
while(<*.pl>) { print;}; # То же что и ls *.pl
@files = <*>; # Массив @files содержит имена файлов в директории
но лучше сделать: @files = glob("*"); т.к. внутри скобок можно использовать
переменные.
Слияние констант.
Как и С Пел выполняет возможные вычисления в период компиляции.
Так подстановка символов после '\' , операция конкатенации строк,
арифметические выражения содержащие только одни константы, все это
делается в момент компиляции что существенно увеличивает скорость
выполнения программы.
Целочисленная арифметика.
По умолчанию Пел выполняе
|
|