Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Создание и вызов подпрограмм




 

Для создания пользовательских подпрограмм в Perl используется следующий синтаксис:

 

subимя-подпрограммы

{

оператор-1;

....................                                                              

оператор-N;

       }

При вызове подпрограммы запоминается место, в котором произошел вызов, выпол­няет операторы подпрограммы и затем возвращается в основную программу к месту вызова. Подпрограммы Perl могут быть вызваны в любом месте основной программы или же из других подпрограмм.

 

Возврат значений из подпрограмм

 

Подпрограмма, как и функции, операторы и выражения Perl, имеет значение. Оно называется возвращаемым значением. Возвращаемое значение подпрограммы – это значение последнего вычисленного в подпрограмме выражения или значение, явно возвращаемое оператором return.

Подпрограммы могут возвращать не только скаляры, но и массивы или хэш-массивы.

 

Аргументы функций

 

Подпрограмма,Значения, передаваемые функции и изменяющие ее поведение, называются аргументами. Для передачи функции аргументов можно использовать следующий синтаксис:

 

имя-функции(арг1,арг2,арг3);

имя-функцииарг1,арг2,арг3;

&имя-функции(арг1,арг2,арг3);

 

Вторая форма (без скобок) может быть использована, только если интерпретатор Perl уже встречал определение этой функции.

В подпрограмме доступ к аргументам осуществляется посредством специальной переменной @_.

Для доступа к индивидуальным аргументам можно использовать индексы массива @_, как и в случае любого другого массива. 

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

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

 

Область видимости

 

Язык Perl позволяет использовать одни и те же имена для обозначения различных пере­менных в большой программе. По умолчанию, переменные Perl видимы в основной программе и в подпрограммах. Это так называемые глобальные переменные.

Допустим, вам нужно создать переменную, относящуюся только к данной функции. Для этого следует воспользоваться операторомmy.

Внутри подпрограммы переменная, объявленная с помощью оператора my является личной переменной. Другие подпрограммы или функции программы не имеют доступа к этой переменной. Та часть программы, в которой можно использовать данную переменную, называ­ется областью видимости переменной.

Личные переменные после окончания подпрограммы аннулируются, т.е. занятая ими память освобождается.

Можно объявить переменные даже с меньшей областью видимости, чем целая подпрограмма. Для этого следует поместить оператор my в блок. Это может быть либо основной блок подпрограммы, либо какой-нибудь другой блок.

В Perl подпрограмма может вызывать саму себя, т.е. допустимы рекур­сивные подпрограммы.

 

Работа со строками в Perl

 

В Perl входит несколько функций работы со скалярами как строками.

Если необходимо определить, содержится ли указанная строка внутри другого скаляра, можно использовать функцию index. Ее синтаксис выглядит следующим образом:

 

indexстрока, подстрока

indexстрока,подстрока,начальная-позиция

 

Функция index начинает просмотр строки слева и ищет в ней подстроку. Во второй версии функции в параметре начальная-позиция задается позиция в строке, с которой начинается поиск подстроки (в первой версии поиск начинается с начала строки). Функция возвращает позицию, в которой найдена подстрока (позиции в строке нумеруются, начиная с нуля). Если подстрока не найдена, функция index возвращает значение -1.

Функция rindex работает точно так же, как index, за исключением того, что поиск начинается с крайнего правого символа строки и проводится в левую сторону. Синтаксис этой функции выглядит следующим образом.

 

rindexстрока, подстрока

rindexстрока, подстрока, начальная-позиция

 

Функция substr возвращает подстроку указанной строки и имеет следующий синтаксис:

 

substrстрока,смещение

substrстрока,смещение,длина

 

В первой версии функция возвращает подстроку, начинающуюся с заданного индекса – смещения в строке и до конца строки, во второй версии возвращается подстрока указанной длины (если в результате происходит выход за пределы строки, то просто берется подстрока до кон­ца строки). Если задано отрицательное значение параметра смещение, то функция substr начинает отсчет справа.

Если задано отрицательное значение параметра длина, то функция substr возвращает подстроку от начальной позиции и до конца строки, за исключением последних символов, количество которых определяется параметром длина.

Функцию substr можно использовать также в левой части оператора присваивания. Такая конструкция позволяет указать, какие символы в скаляре должны быть за­менены. В этом случае в качестве первого аргумента функции substr следует задать скалярную переменную, а не строку символов, которой будет присваиваться значение.

 

Регулярные выражения в Perl










Последнее изменение этой страницы: 2018-04-12; просмотров: 362.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...