|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Nick Kostirya 2:5020/400 04 May 2004 11:30:30 To : All Subject : Carp или как я провел праздники. --------------------------------------------------------------------------------
Решил поделиться поучительным примером,
под названием "Carp или как я провел праздники".
:-).
История со счастливым концом.
Сегодня утром решил поиграться немного с функциональным стилем и
исключениями, и был шокирован поведением модуля Carp.
Hе веря своим глазам, для проверки увиденного навалял вот такой файлик:
=== начало===
use Carp qw(carp cluck);
main();
sub main {
foo();
}
sub foo {
warn "It's warn";
carp "It's carp";
cluck "It's cluck"
}
=== конец ===
При запуске получаю
It's warn at 1.pl line 10.
It's carp at 1.pl line 11
main::foo() called at 1.pl line 6
main::main() called at 1.pl line 3
It's cluck at 1.pl line 12
main::foo() called at 1.pl line 6
main::main() called at 1.pl line 3
Долго думал: с каких это пор carp ведет себя как cluck?
Hеужели я ковырялся в модуля Carp у себя на машине?
Запускаю под другой версией перла: результат тот же!
Ошалело запускаю под Линухом - тоже!!!
Hа другом сервере.... Я в панике :-)
Всю жизнь работало же... Как же так?!
Проверяю первый попавшийся свой код, использующий Carp - работает :-)
И тут осеняет, что везде carp использую в пакетах!
Бегом делаю
=== начало===
main();
sub main {
Foo::foo();
}
package Foo;
use Carp qw(carp cluck);
sub foo {
warn "It's warn";
carp "It's carp";
cluck "It's cluck"
}
1;
=== конец ===
Мир вернулся на свое место!!!
Хотя, странно, почему автор модуля не предусмотрел использование Carp из
main?
Может кто-то знает?
Вот такая история.
Nick.
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65774cc1fe37.html, оценка из 5, голосов 10
|