|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 24 Mar 2003 13:53:17 To : Mikhail Polykovsky Subject : Re: Re[2]: eval -------------------------------------------------------------------------------- Здравствуй, Mikhail Polykovsky. MP>>> Вываливается по syntax error в строке с use. Как правильно сделать? AA>> Попробуй так: AA>> eval qq| AA>> use $module ($sub); AA>> #use $module тоже не работает AA>> \$${module}::our_var1 = \$var1; AA>> \$${module}::our_var2 = \$var2; AA>> \$out .= &${sub}(\$var3); # если вызывать из ранее подключенного AA>> # модуля, эта строка работает AA>> |; AA>> print $@; MP> Ага, вызов проходит, но те значения, что раньше возвращали функции, MP> почему-то не возвращаются. Переменная, куда записывается результат, MP> пуста (а раньше возвращалось корректно). Куда копать? Здравый подход заключается в том, чтобы поделить две части. А именно: eval "use $module ($sub)"; if ($@) { обработка ошибки } ${"${module}::our_var1"} = $var1; ${"${module}::our_var2"} = $var2; $out .= &$sub($var3); Возможно, еще придется поиграться с no strict 'refs', если мы под use strict. Hо скорее всего, эта задача свидетельствует об ошибке проектирования этого места. -- Artem Chuprina RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/11477d315035a.html, оценка из 5, голосов 10
|