Использование пакетов для изоляции подпрограмм — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Использование пакетов для изоляции подпрограмм

2022-12-30 17
Использование пакетов для изоляции подпрограмм 0.00 из 5.00 0 оценок
Заказать работу

Если у вас имеется много подпрограмм, особенно подпрограмм,которые вы храните в различных файлах, то может возникнуть коллизия имен переменных, когда одно и то же имя переменной используется в различных целях. 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.


Поделиться с друзьями:

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.014 с.