Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Владимир Маслов - Введение в Perl
<<-[Весь Текст]
Страница: из 56
 <<-
 
ние функции local() не целесообразно в циклах так как
она вызывается каждый раз и таким образом заметно замедляет время
выполнения цикла.


Прототипы (prototypes).


Для краткого описаня типа параметров передаваемых подпрограмме
можно применять прототипы. В Пел существуют следующие прототипы:

	Декларация		Пример вызова

	sub mylink($$)		mylink $old, $new
	sub myvec($$$)		myvec $var, $offset, 1
	sub myindex($$;$)	myindex &getstring, "substr"
	sub myreverse(@)	myreverse $a, $b, $c
	sub myjoin($@)		myjoin ":",$a,$b,$c
	sub mypop(\@)		mypop @array
	sub mysplice(\@$$@)	mysplice @array, @array, 0, @pushme
	sub mykeys(\%)		mykeys %{$hashref}
	sub myopen(*;$)		myopen HANDLE, $name
	sub mypipe(**)		mypipe READHANDLE, WRITEHANDLE
	sub mygrep(&@)		mygrep { /foo/ } $a, $b, $c
	sub myrand($)		myrand 42
	sub mytime()		mytime

Здесь:
	\'символ'	- параметр с типом 'символ'

	'@' или '%'	- все оставшиеся параметры как список

	'$'		- скаляр

	'&'		- безимянная подпрограмма

	'*'		- ссылка на таблицу имен

	';'		- разграничитель обязательных и не обязательных параметтров.


Ссылка как параметр.


Иногда нужно в качестве параметра передать подпрограмме не значение
элемента массива а ссылку на него, что бы подпрограмма могла изменить
значение элемента. Для этого в Пел к имени переменной добавляется
символ '*' Подбное выражение называют 'type glob' так как в Юниксе
символом '*' обозначают "все возможные значения". Поэтому '*' для
массива означает "все элементы массива".
Для скаляров употряблять '*' не имеет смысла т.к. они и так передаются
ссылкой и вы можете изменять значение параметра изменяя например
переменную $_[0].


Переопределение встроенных функций.


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

Для этого нужно перечислить имена этих функций в виде:

	use subs 'функция1', 'функция2' ....;

и далее в модуле определить сами функции.


Автозагрузка.


Если вы попытаетесь вызвать не существующую функцию то Пел выдаст
немедленно сообщение об ошибке. Но если вы определите подпрограмму
с именем 'AUTOLOAD' то она будет вызвана с теми же параметрами
а переменная $AUTOLOAD будет содержать имя не существующей
подпрограммы. Данный механизм очень удобен для средств отладки.

 * Модули (packages) * 


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

	packages имя_модуля;

     Конец  модуля  это  конец блока или файла. Головной модуль
имеет по
 
<<-[Весь Текст]
Страница: из 56
 <<-