- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
use strict;
use warnings;
my $bottom = sub {
my $test = shift // 'undef';
print "bottom( $test )\n";
};
sub sub_bottom {
my $test = shift // 'undef';
print "sub_bottom( $test )\n";
}
sub fallthrough {
&$bottom;
}
sub not_fallthrough {
&$bottom();
}
sub not_fallthrough2 {
sub_bottom;
}
fallthrough('Fallen1');
not_fallthrough('Fallen2');
not_fallthrough2('Fallen3');
Долго пытался понять как до сабины доходят аргументы, хоть она вызывается без них. Обнаружил вот это. OH SHI~
Вывод:
Чёрт :(
Даже не знал о таком нюансе в perl, в документации есть что-нибудь по данному поводу ?
http://perldoc.perl.org/perlsub.html
Почему оно так себя ведет только при вызове через ссылку, а прямой вызов будет без аргументов? :)
Вообще, правильно использовать goto &sub_name; goto &$sub_name; чтобы не заморачивать голову ни себе, ни другим.
The new subroutine inherits the argument stack and other features of the original subroutine; it becomes impossible for the new subroutine even to know that it was called by another name.
Жжесть... Буду и дальше юзать перл как очень удобный движок для переработки текстовых файлов. Для чего-то более масштабного - нет уж, увольте ;)
Ты часто дебажишь? И именно в данном куске кода? Или пишешь код как выше? Не такая уж страшная проблема. Зато не прибавляет тормозов, понятна всем и работает как задумано. Твой вариант через $mysub тоже не отдебажишь нормально, ибо это анонимная функция.
>Для чего-то более масштабного - нет уж, увольте ;)
Дело твое. Везде есть свои плюсы/минусы.
Это не мой код ;) Для меня оба кода темный лес. Что с goto, что со ссылкой.
Все что я пишу на перле - это конвертеры/аггрегаторы/анализ логов и т.п. Ну иногда простые скриптики для пакетной обработки чего-нибудь, если на баше это будет сильно страшно (регулярки, выпарсивание чего-то из файлов, вычисления и т.п.). Для этих целей он мне очень нравится.
> Ты часто дебажишь?
Нет, тупо прогоняю скрипты на контрольных примерах. Я перловский дебаггер никогда не юзал, даже не знал, что он есть.
Тогда уж сразу my $ass.
стиль? мы все еще про перл говорим??
вы все дилетанты-неперловщики тут зацыклились на скрытой передаче @_ в то время как основное применение этого синтакса это передача $_ (через алиас). например, cat c upper-case'ом:
http://ideone.com/5cRWIf
http://ideone.com/rXJYHP
<a href=" http://cialis10mgprixenpharmacieenligne.com/ ">cialis 10mg prix en pharmacie en ligne </a>
<a href=" http://cialis20mgprixenpharmacierx.com/ ">cialis 20mg prix en pharmacie en france </a>
<a href=" http://cialissansordonnanceenfrance.com/ ">cialis sans ordonnance pharmacie paris </a>
<a href=" http://achetercialissansordonnanceenpharmacie.c om/ ">acheter cialis belgique sans ordonnance </a>
<a href=" http://achatcialisenfrancelivraisonrapide.com ">achat cialis en france livraison rapide </a>
<a href=" http://achatcialis5mgenligne.com/ ">acheter cialis 5mg </a>
<a href=" http://achetercialis20mgenligne.com/ ">acheter cialis 20mg en ligne </a>
<a href=" http://achattadalafilenfranceenpharmacie.com/ ">achat cialis en ligne france </a>
<a href=" http://acheterprednisone20mgenligne.com/ ">acheter prednisone </a>
<a href=" http://acheterpropeciasurinternet.com/ ">acheter propecia sur internet </a>