Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Perl / Руководство Маслов /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Подпрограммы - Программирование от RIN.RU
Подпрограммы

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


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


ДекларацияПример вызова
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



Здесь:

  • \"символ" - параметр с типом "символ"
  • "@" или "%" - все оставшиеся параметры как список
  • "$" - скаляр
  • "&" - безымянная подпрограмма
  • "*" - ссылка на таблицу имен
  • ";" - разграничитель обязательных и не обязательных параметров.




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


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


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


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


use subs "функция1", "функция2" ....;
и далее в модуле определить сами функции.


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


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


Предыдущий урок
Следущий урок

<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

От простого к сложному

Запуск Perl-программы

Синтаксис

Модули

Встроенные переменные

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

Операторы и приоритеты

Встроенные функции

Форматы отчетов

Отладка Perl программ.

Подпрограммы

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь
1с бухгалтерия почему ее выбирают бухгалтера