| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 для чтения хешей |