Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Если у вас имеется много подпрограмм, особенно подпрограмм,которые вы храните в различных файлах, то может возникнуть коллизия имен переменных, когда одно и то же имя переменной используется в различных целях. Perl помогает избежать этого с помощью пакетов (packages). Как известно, объявляя локальные переменные для подпрограмм, можно избежать коллизии имен. Однако если несколько подпрограмм совместно используют какие-то специфические данные, то эти данные могут потребовать глобальной области видимости, что как раз и может вести к коллизии имен.Используя пакеты, можно группировать глобальные данные в частныепространства имен (name-spaces), вне пределов которых глобальныепеременные не видны, т. е. неизвестны. Рассмотрим приведенный ниже простой пример, в котором две подпрограммы (находящиеся в различных файлах) используют частные, индивидуальные пространстваимен.
# Код в файле one.pl sub sub_one { package demo_one; $some_data = 10; } # * * * * * * * * # Код в файле two.pl sub sub_one { package demo_two; $some_data = 20; }Как можно видеть, первая подпрограмма использует имя пакета demo_one, вторая подпрограмма использует имя пакета demo_two. Обеподпрограммы могут устанавливать и использовать переменную$some_data без возникновения коллизии имен между одной и другойглобальными переменными. Скрипт <знает> имя пакета, в пределах которого находится переменная, и он организует доступ к ней, использует имя пакета вкачестве префикса к имени переменной. В следующем примере имя пакета package_one или package_two добавляется в качестве префиксак имени переменной some_data:
&sub_one; &sub_two; print "Переменная 1 $package_one'some_data\n" print "Переменная 2 $package_two'some_data\n"Когда вы используете пакеты языка Perl, можете создать уникальное пространство имен в пределах текущего файла исходных кодов путем помещения инструкции package в начале файла, как показано ниже:
package some_package_name $some_data = 1; sub some_sub { return $some_data; }В данном случае переменная $some_data существует только впакете и поэтому защищена от некорректного доступа. Использование пакета, таким образом, обеспечивает данным ту же область видимости, что и в языке программирования С, где глобальные переменные имеют своей областью видимости тот файл исходных кодов, вкотором они объявлены. При вызове подпрограммы из другого файласкриптов необходимо использовать имя пакета:
require 'some_package.pl'; print &some_package_name'some_sub;ОБРАБОТКА СТРОК
В предыдущих примерах вы научились построению строковых литералов, используя интерполяцию переменных. Вы также научилисьвыполнять соединение строковых литералов и строковых переменных.В этом разделе вы видите, что Perl предоставляет большой наборфункций, с помощью которых скрипты могут манипулировать строками.
ФУНКЦИЯ CHOP
Функция chop удаляет последний символ строки. Она имеет следующий формат:
$character = chop(Str);Функция chop возвращает удаленный символ. Скрипты языка Perlшироко используют chop для удаления символа перехода на новуюстроку и символа конца строки.
ФУНКЦИЯ INDEX
Функция index осуществляет поиск заданной подстроки в строке. Она имеет следующий формат:
$location = index(Str, SubStr[, Offset]);Функция index возвращает индекс первого вхождения подстроки(SubStr) в строку (Str). Факультативно может быть задан сдвиг отначала (Offset), после которого начинается поиск. Если подстрокане найдена, возвращается значение -1. В следующем примере функция index ищет вхождения подстроки 'па' после третьего символа встроке 'banana':
print index('banana','na',3); # Выведет 4.ФУНКЦИЯ RINDEX
Функция rindex ищет последнее, самое правое вхождение подстроки в строку и возвращает значение позиции первого символа подстроки. Функция имеет следующий формат:
$location = rindex(Str, SubStr);Эта функция аналогична функции index, за исключением того,что она возвращает последнее вхождение, а не первое. Например, вследующем примере функция rindex используется для определенияпоследнего вхождения подстроки 'na' в строку 'banana':
print rindex('banana','na'); # Выведет 4ФУНКЦИЯ LENGTH
Функция length возвращает число символов в строке. Она имеетследующий формат:
$len = length(Str);В следующем примере функция length используется для выводачисла символов в строке:
print length('banana'); # Выведет 6ФУНКЦИЯ SUBSTR
Функция substr используется для удаления части строки. Онаимеет следующий формат:
$substring = substr(Str, Offset[,Len]);Функция возвращает подстроку, т. е. часть строки, длина которой не превышает величины, заданной факультативным параметромLen. Возвращаемая подстрока строки str начинается с символа в позиции, заданной сдвигом Offset. Если параметр Len опущен, то возвращаемая строка содержит символы до конца строки включительно.Если параметр Offset отрицательный, то сдвиг вычисляется от конца строки. Наконец, скрипт может использовать substr как lvalueдля выполнения операции присваивания. Следующий фрагмент кода иллюстрирует использование функции substr.
print substr('orange',3); #Выведет 'nge' print substr('orange',-2); # Выведет 'ge' print substr('orange',2,2); # Выведет 'an' $str = 'apple'; substr($str,-3) = 'ricot'; print $str; # Выведет 'apricot'Примечание: Часто использование операторов языка Perl для регулярных выражений оказывается более эффективным, чем функцииsubstr. Регулярные выражения обсуждаются ниже в данной главе.
ФУНКЦИЯ JOIN
Функция join соединяет список элементов в строку, разделяякаждый элемент заданным символом. Она имеет следующий формат:
$new_string = join(Str,List);Функция join конвертирует каждый элемент списка в строку исоединяет строки. Следующий фрагмент кода иллюстрирует использование функции join:
$str = join(',', 0..4,10,20); # Список будет '0,1,2,3,4,10,20' $strn = join ("\t", $a, $b, $c);# Смешает спискиФУНКЦИЯ SPLIT
Функция split разделяет содержимое строки на список элементов. Она имеет следующий формат:
split(Delimeter, Str[,Limit]);Аргумент Delimeter определяет символ, по которому осуществляется разделение, например, пробел, слово, символ табуляции ит. д. Факультативный параметр Limit задает максимальное числоэлементов, которое может содержать список. Следующий пример иллюстрирует использование функции split.
|
|
|
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!