| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Несколько вопросов по Perl |
| Автор: cosamia 6.6.2005, 05:15 |
| Не подскажите, как в перле работать с веб сервисами? И также еще несколько вопросов: 1) есть ли в перле обработка исключений ? например на jsp я могу сделать так: <%@ page errorPage="jsp1_error.jsp" %> у C# : try-catch-finally у других языков другие примочки. а как на перле? 2) попытался обработать подключение к БД следующим образом: $dbh=DBI->connect(...)||die "Can not connect"; Для проверки ввожу неправильный пароль и естественно подключения нет, но сообщение об этом не пишется. Почему? 3)вопрос по сессиям. в вышеуказаном примере используется mySQL для хранения сессий: tie %session, 'Apache::Session::MySQL' А если у меня база Oracle или MS SQL, достаточно ли будет написать: tie %session, 'Apache::Session::Oracle' tie %session, 'Apache::Session::MSSQL' или для каждой базы это делается по разному? |
| Автор: chaos 6.6.2005, 06:37 |
| ответ на 1 вопрос: для этого есть eval |
| Автор: cosamia 6.6.2005, 08:32 |
| вопрос на ответ на 1й вопрос% eval что? пример кода можно? |
| Автор: korob2001 6.6.2005, 20:22 | ||
| 1.) Про eval читай тута: http://forum.vingrad.ru/index.php?showtopic=8681 2.) Потому что ошибка происходит не в Perl а в MySQL, для того, что бы получить эту ошибку, при подключении нужно Попробуй написать так:
3. Достаточно, если конечно у тебя установлены эти модули. А вообще этот вопрос можно было и не задавать, достаточно было попробовать. Если рабоать не будет, тогда устанавливай модули Apache::Session::Oracle и Apache::Session::MSSQL и будет тебе счастье. Удачи. |
| Автор: cosamia 7.6.2005, 06:24 |
| 2) не работает так как ты редлагаешь: my $dbh = DBI->connect("DBI:mysql:host=$host;database=$base", $log, $pass, { PrintError => 0, RaiseError => 1 } ) or die "Error: $DBI::errstr\n"; в случае не правильного пароля не выводится никакой ошибки! Я попробовал еще сделать так: use CGI::Carp qw(fatalsToBrowser)) $dbh = DBI->connect("DBI:mysql:host=$host;database=$base", $log, $pass, { PrintError => 1, RaiseError => 0 } ) Но в этом случае выдается такое сообщение: Software error: Can't call method "prepare" on an undefined value at /home... line ## For help, please send mail to the webmaster (you@yourhost.com), giving this error message and the time and date of the error. неужели никто из перл гуру никогда не проверяет коннект? или вы его всегда делаете на основе статического пароля-логина? Уже 2 дня по форумам спрашиваю и никто не знает. Добавлено @ 06:30 кстати если AutoCommit => 0 то это ON или OFF ? |
| Автор: korob2001 7.6.2005, 10:38 | ||||
Пишу такой код, в котором не верно указан пароль:
Получаю такую ошибку прямо в браузер:
За более подробной информацией обращайся к лог файлу. |
| Автор: cosamia 7.6.2005, 12:48 |
| У меня так пишется код ошибки. И выводится строка подключения. Но я не хочу чтобы пользоатель все это видел. Как сделать чтобы он видел лишь некоторое мое сообщение? То что я пишу после die "..." почему то не выводится. выводится только код ошибки и т.д. |
| Автор: Vaneska 7.6.2005, 15:49 | ||
| Чтобы в браузер не выводилось сообщение, вместо die "Error: $DBI::errstr\n" поставь функцию такого типа:
Функция записывает в файл отчета ошибку и, если указан параметр $d, аварийно завершает программу с выводом строки "Script error!" |