Просто любопытство, я немного поиграл с прототипированием, но кажется, что прототип &
для подпрограммы разрешен только в первой позиции.
Когда я пишу
sub test (&$$) {
do_something;
}
и назовите его
test {doing_something_else} 1,2;
. Это работает.
Когда я создаю такой прототип, как
sub test ($$&) {
do_something;
}
и снова называю его
test 1,2 {doing_something_else};
это не работает.Я пытался с различными перестановками, но, кажется, ничего не доставляет.
Я что-то упустил, или это невозможно?И если нет, то почему?
(мне, возможно, нужно указать, что я успешно попробовал вариант вызова test (1, 2, sub {foo}), конечно, но это выглядит не совсем таксексуальный как вариант в последнем примере выше (и для этого мне даже не нужно создавать прототипы), я хотел бы иметь возможность реализовать синтаксис структур, таких как if () {} else {} и т. д., или, болееточка, try () catch () {} или switch () case () {}, но я думаю, поэтому эти конструкции еще не реализованы в Perl)