Claw.ru: Все для вебмастера и оптимизатора old. Всё для учебы, работы и отдыха. Продвижение сайта. Заработок с сайта. Партнерские программы. Учебники.
Claw.ru: Все для вебмастера и оптимизатора old
Всё для учебы, работы и отдыха
» Продвижение сайта
» Заработок с сайта
» Партнерские программы

- шаблон алфавитно-цифровой последовательности.
В результате @dirs равен ('usr', 'local', 'perl')

q/строка/
'строка'

Строка литералов. Не интерполируется. Внутри строки разрешается использовать \' или \\ для обозначения символов ' и \ .

Пример:

     print q#Привет.#;     # Результат Привет.
     print 'O\'K';          # O'K

qq/строка/
"строка"

Интерполируемая строка.

Пример:

     $var = 13;
     print "\$var = $var";
Результат: $var = 13

qx/строка/
`строка`

Сначала строка интерполируется, а потом выполняется как системная команда.

Пример:

     print `date`;
Результат: Thu Nov 14 13:36:49 MSK 1996

qw/строка/

Возвращает список, элементы которого - слова строки, разделенные пробелами.

Пример:

     print qw/Построимся и спасемся!/; 
	   # ('Построимся','и','спасемся!')
Результат:
     Построимсяиспасемся!
Часто применяется как:
     use POSIX qw( setlocale localeconv )
     @EXPORT = qw( proc1 var );

s/шаблон/подстрока/egimosx

Поиск по шаблону и в случае успеха замена подстрокой. Возвращает количество произведенных подстановок, иначе false (0). Если строка в которой ведется поиск не указана (операторы =~ или != ), то используется переменная $_ . Если в качестве разделителя '/' использовать одинарную кавычку ('), то интерполяции не будет, иначе можно применять переменные в шаблоне или подстроке.

Опции:

e- Рассматривать правую часть как выражение.
g- Глобальный поиск.
i- Без различия регистра букв
m- многострочная переменная
o- компилировать шаблон один раз
s- однострочная переменная
x- расширенное регулярное выражение

Разделитель '/' можно заменить на любой алфавитно-цифровой символ кроме пробела.

Пример:

     $var = "12345"; # исходная строка
     $var =~ s/1/0/; # Заменить '1' на '0'.
	  Результат 02345
     $var =~ s(5)(.); # Заменить '5' на '.' 
	 Результат 0234.

Здесь в качестве разделителя применены скобки, поэтому подстрока взята в две скобки.

     $var =~ s/\d*/каламбур/; Заменить все цифры. 
	 Результат 'каламбур.'
     $var =~ s/а/о/g; # Заменить все 'а' на 'о'. 
	 Результат 'коломбур.'
     $var = "12 34"; # Новое значение
     $var =~ s/(\d\d) (\d\d)/$2 $1/; # Поменять
	 местами числа. Результат '34 12'.

tr/таблица1/таблица2/cds
y/таблица1/таблица2/cds

Замена всех символов из "таблица1" на соответствующий символ из "таблица2". Результат - количество замен или стираний. Без оператора =~ или != операция выполняется со строкой $_. Для совместимости с программой sed вместо tr можно писать 'y'.

Опции:

c- дополнение "таблица1"
d- стереть найденные, но не замененные символы.
s- "сжать" повторяющиеся замененные символы.

Если указана опция /d таблица2 всегда интерпретируется как положено. Другими словами, если таблица2 короче, чем таблица1, то символ из таблицы1 интерпретируется всегда. Если таблица2 - null, то все символы строки остаются неизменными. Это удобно для подсчета количества символов в строке определенного класса или для сжатия повторяющихся символов, например, пробелов.

Пример:

     $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, то применяется только первая замена.

Операторы ввода-вывода.

В Perl существует несколько операторов ввода-вывода. Первый это скобки из символа '`' - акцента. Строка в этих скобках воспринимается как системная команда и результат ее действия возвращается как "псевдо" литерал. В скалярном контексте это строка содержащая весь результат, а в списковом - список, элементы которого - строки результата. Статус выполненной команды хранится в переменной $? .

Следующая команда ввода вывода выглядит как '<файл>'. Вычисление <файл> приводит к чтению строки из файла. Обратите внимание, что 'файл' здесь не имя файла, а указатель файла, который создается функцией open(). В скалярном контексте читается одна строка вместе с символом '\n' - перевода строки, а в списковом весь файл читается в список, элементы которого суть строки файла. В случае обнаружения конца файла результат оператора не определен и воспринимается как false. Если не указана переменная результата, то по умолчанию это $_. Указатель файла по умолчанию STDIN - стандартный ввод.

Пример:

     while(<>) { print; }; # Прочитать и вывести 
	 весь файл STDIN

У оператора '<>' есть одна отличительная особенность. Если в командной строке нет никаких аргументов, то читается стандартный ввод, если есть аргументы, то они считаются именами файлов, которые последовательно читаются.

Если в угловых скобках записана переменная, то содержимое этой переменной считается именем указателя файла или ссылкой на указатель файла. Если такого указателя не существует, то содержимое переменной воспринимается как шаблон имен файлов и результат - имена файлов на диске, подходящих по шаблону.

Пример:

     while(<*.pl>) { print;}; # То же что и ls *.pl
     @files = <*>;     # Массив @files содержит имена
	  файлов в директории
но лучше сделать: @files = glob("*"); т.к. внутри скобок можно использовать переменные.

Слияние констант.

Как и С Perl выполняет возможные вычисления в период компиляции. Так подстановка символов после '\' , операция конкатенации строк, арифметические выражения, содержащие только одни константы, все это делается в момент компиляции, что существенно увеличивает скорость выполнения программы.

Целочисленная арифметика.

По умолчанию Perl выполняет арифметику с плавающей запятой, но если вы укажете:

     use integer;
то компилятор будет использовать целочисленную арифметику до конца текущего блока, хотя вложенный блок может это и отменить в своих пределах с помощью:
     no integer;

[Назад] [Содержание] [Вперед]


Поделитесь этой записью или добавьте в закладки

   



Полезные публикации

  • » Статьи и обзоры
  • » Учебники для вебмастера
  • » РОДЖЕР БЭКОН
  • » Электронная почта
  • » ЭМПЕДОКЛ И АНАКСАГОР
  • » Интуиция и научное познание
  • » Visual Basic 6.0: Иллюстрированны
  • » Русская деревня в изображении Сол
  • » Системы массажа
  • » ПОЗДНИЙ НЕОПЛАТОНИЗМ