class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

основы

введение
инструментарий
типы данных
переменные
литералы
строки
массивы
отображения
ссылки
операции
управляющие операторы
функции
пакеты, модули

разное

переменные окружения
MySQL

Справочник по Perl

Функции

создание функций

Функция определяется с помощью ключевого слова sub. Имена функций не используют префикс. Таким образом, можно определять переменную $funcname и функцию funcname без каких-либо конфликтов.

#объявление функции не обязательно
sub funcname;

#определение функции
sub funcname {

}

аргументы

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

sub sum {
my $sum=0;
foreach $it(@_) {$sum+=$it;}
return $sum;
}
print sum(1,2,3,4);

вызов функции

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

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

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

& обязателен при простом перечислении имен функций. & также используется для вызова функций по ссылке (&$subref(), &{$subref}(), $subref->()).

#======================
sub fn{
@_[0]+@_[1]+@_[2];
}
&fn(1,2,3);        
fn(1,2,3);
print fn 1,2,3; # возможно если fn объявлена выше

#======================
fn1();
&fn1();

#======================
&fn2; 
fn2; # возможно если fn2 объявлена выше

прототипы

Под прототипированием в perl понимается указание какого типа могут быть аргументы функции. Прототипы указываются в круглых скобках после имени функции.

Ниже приведены примеры объявлений функций с прототипом и их вызовы из документации по perl.

     
sub mylink ($$)          mylink $old, $new
sub myvec ($$$)          myvec $var, $offset, 1
sub myindex ($$;$)       myindex &getstring, "substr"
sub mysyswrite ($$$;$)   mysyswrite $buf, 0, length($buf) - $off, $off
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

локальные переменные

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

# создаем две переменные и инициализируем их
my($lvar1,$lvar2) = (3,4); 
# если переменная одна можно без скобок
my $lvar=25;

возвращаемое значение

Возвращаемое значение указывается в операторе return. Если его нет, то возвращается последнее вычисленное выражение.


Рейтинг@Mail.ru