Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > eval |
Автор: od0201 23.10.2010, 22:53 | ||
Software error: can't open .user/data/1000000001: No such file or directory at user/session.pl line 169 да, не существует такого файла, но зачем ругаться ??? В чем прикол? Заранее благодарен |
Автор: tishaishii 23.10.2010, 23:05 |
А хз кто такой "retrieve". Там и собака порылась, наверное. |
Автор: Jimy 24.10.2010, 08:37 | ||
"Прикол" здесь в том, что если использовать eval {...} вместо eval (...), то ругаться перестанет, а сообщение об ошибке будет помещено в переменную $@; Объяснить данное поведение, к сожалению, толком не могу. Разница здесь в том, что во втором случае код в eval не рассматривается до этапа выполнение и потом компилируется на лету. Как это влияет на вывод ошибок затрудняюсь объяснить. И второй момент. Перед тем как работать с файлом внутри функции retrieve, Вы можете выполнить проверки на его существование и доступность и не производить лишние операции если файла нет.
|
Автор: KSURi 24.10.2010, 13:00 |
Если вы используете eval(), то аргумент надо брать или в кавычки, или в фигурные скобки. Иначе в eval передастся результат выражения внутри круглых скобок (который на самом деле умирает). |
Автор: od0201 26.10.2010, 03:41 |
хочу заметить что в переменную $@ при {} передается can't open 111.txt: No such file or directory at script.pl line 666 при "" передается syntax error at (eval 10) line 1, near "=" получил исчерпывающий ответ, спасибо Jimy и KSURi ![]() |
Автор: Carvolan 31.10.2010, 15:17 | ||
Скорее всего используется Storable для чтения хешей |