[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Обработка исключений на perl



не в ту рассылку, но может заодно кто и подскажет где есть русскоязычная
рассылка по perl. а сюда пишу потому как тут вроде народ должен быть
perl понимающий :)

итак,
только начал его изучать ну и надо перехватить die из некоторой
библиотечной функции

вычитал у Л.Уолла что это делается следующей конструкцией:

eval
{
 бла-бла которое может кончиться die;
};
if ($@)
{
  обработчик die;
}

ну и теперь возникает соблазн писать так:

sub foo
{
  eval
  {
    if (&foo2)
    {
      return 0;
    }
    else
    {
      return $a+$b+$c;
    }
  };
  if ($@) 
  {
    разгребаемся с ошибкой если foo2 бросила die
    return чего-то там;
  }
  return чего-то там;
}

так вот я столкнулся с тем, что данный код не рабочий, написал такой вот
тест:
dimka:[/home/dimka]$ cat test.pl 
#!/usr/bin/perl

sub testik
{
  eval
  {
    return;
  };
  print "Privet\n";
}

&testik
dimka:[/home/dimka]$ perl test.pl 
Privet

то есть return из под eval не работает

и как быть?
может я вообще в неправильном направлении пытаюсь идти или чего-то
недопонимаю?

спасибо



Reply to: