Прототипы также часто применяются для
sub LOCK_SH (){1} sub LOCK_EX () { 2 } sub LOCKJJN () { 4 }
Имитация встроенных функций
Прототипы также часто применяются для имитации поведения таких встроенных функций, как push и shift, передающих аргументы без сглаживания. При вызове push (@а г ray, 1, 2, 3) функция получает ссылку на @а г ray вместо самого массива. Для этого в прототипе перед символом @ ставится обратная косая черта:
sub mypush (\@@) { my $array_ref = shift; my ©remainder = @_;
mypush( $х > 10 ? @а : @b , 3, 5 ); # НЕВЕРНО
Вместо этого приходится изощряться со ссылками: mypush( @{ $х > 10 ? @а : @b }, 3, 5 ); # ВЕРНО
Приведенная ниже функция hpush работает аналогично push, но для хэшей. Функция дописывает в существующий хэш список пар <<ключ/значение>>, переопределяя прежнее содержимое этих ключей.
sub hpush(\%@) {
my $href = shift;
while ( my ($k, $v) = splice(@_, 0, 2) ) {
$href->{$k} = $v;
> }
hpush(%pieces, "queen" => 9, "rook" => 5);
t> Смотри также--------------------------------------------------------------------------------------------
Описание функции prototype вperlfunc(l);perlsub(l); рецепт 10.5.
10.12. Обработка исключений
Проблема
Как организовать безопасный вызов функции, способной инициировать исключение? Как создать функцию, инициирующую исключение?
Решение
Иногда в программе возникает что-то настолько серьезное, что простого возвращения ошибки оказывается недостаточно, поскольку та может быть проигнорирована вызывающей стороной. Включите в функцию конструкцию die СТРОКА, чтобы инициировать исключение:
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий