Вот такой вот вопросик: Если в тексте программы я определил переменную, скажем $text, а ниже я вызываю функцию eval с каким либо кодом внутри, то будет ли доступна мне переменная $text внутри eval или она будет считаться неопределенной? _________________ ТюмГНГУ |
Konst писал(а): Будет доступна.Ты берешь в рассмотрение язык php или без разницы какой язык ? _________________ ТюмГНГУ |
Xak писал(а): Ты берешь в рассмотрение язык php или без разницы какой язык ?думаю в HTML и CSS эта функция работать не будет ![]() з.е. смотрим название ветки |
eval работает примерно как include _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
Просто я выполняю такой код:
eval("use DBI;"); eval("my $pglink = DBI -> connect(....."); Так вот етот код выдает ошибку, а именно вторая строка. Мол вы не подключили модуль DBI, хотя в первой строке я его подключаю Не работает и етот код: use DBI; eval("my $pglink = DBI -> connect(....."); Что делать ума не приложу ![]() _________________ ТюмГНГУ |
А вообще без eval работает?
З.Ы. Вопрос, как оказалось, вообще из другой оперы, потому как никакие переменных вне евала ты не определяешь в этом примере. |
Xak писал(а): Не работает и етот код: в этом случае что пишет? ps: вообще странное использование eval, может что-то с логикой не то? _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
andy ice писал(а): Xak писал(а): Не работает и етот код: в этом случае что пишет? ps: вообще странное использование eval, может что-то с логикой не то? Возможно я привел не удачный пример. В том и другом случаи пишет что переменная неизвестна. На самом деле у меня получается так, что в первом евале определяется переменная, а во втором евале происходит манипуляция с ней (вернее так должно быть, но вылетает ошибка). _________________ ТюмГНГУ |
Конкретно по твоему вопросу:
Xak писал(а): Если в тексте программы я определил переменную, скажем $text, а ниже я вызываю функцию eval с каким либо кодом внутри, то будет ли доступна мне переменная $text внутри eval или она будет считаться неопределенной?
|
Xak
http://wdh.suncloud.ru/perl10.htm#feval Функция eval Синтаксис: eval аргумент Аргументы: аргумент — выражение или блок Если аргумент является выражением, то его значение вычисляется в скалярном контексте, компилируется и исполняется как PERL-сценарий. Если аргумент опущен, то вычисляется значение пераменной $_. Эта форма функции eval позволяет динамически строить фрагменты PERL-программы. Если аргумент является блоком, то он компилируется во время компиляции самой функции eval, а исполняется в контексте текущей программы. Обратите внимание, что такой вызов не считается вырожденным циклом и к нему не применимы операторы last, next и redo. Эта форма функции обычно используется для обработки исключений. И в значении выражения, и в блоке последний символ точка с запятой может быть опущен. В обоих случаях функция eval возвращает значение последнего вычисленного в ней выражения. Можно использовать и оператор return, так же, как в подпрограммах. ВОзвращаемое значение вычисляется в зависимости от контекста, в котором вызвана функция eval (подробнее об этом см. описание wantarray). Если произошла ошибка компиляции или была вызвана функция die(), то eval возвращает неопределенное значение, а в переменную $@ заносится сообщение об ошибке. Если ошибок не возникло, то в $@ заносится пустая строка. Пример использования eval для обработки исключения: $a = 1; $b = 0; eval { $answer = $a / $b }; warn $@ if $@; Примеры использования eval для динамического вычисления выражений: eval $x; # 1 eval "$x"; # 2 eval '$x'; # 3 eval { $x }; # 4 Выражения 1 и 2 компилируют PERL-программу, содержащуюся в переменной $x и выполняют ее. Выражения 3 и 4 просто возвращают значение переменной $x. ---- проще говоря ты делаешь одно, а вопрос задаешь о другом. _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
Понятно. Спасиба всем. Можно закрыть тему. _________________ ТюмГНГУ |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |