![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Привет!
Написал гостевую, всё работает на ура. Но возникла такая проблема. Запускаю скрипт и ввожу такое сообщение: Hi! My name is Dennis. ;) После отправки получаю такое сообщение: Unmatched ) in regex; marked by <-- HERE in m/Hi! My name is Dennis. ;)<-- HERE / at z:\home\LOCALH~1\cgi-bin\rst\gb\gb.pl line 63, <GB> line 1 Вот часть кода где всплывает ошибка:
Нуменрация строк приведена так как в программе. $mess - полученное сообщение из формы. Впринципе ошибка ясна, но проблема с её решением, я с такой ошибкой столкнулся впервые. Помоему как-то нужно заключить в кавычки с помощью qr() переменную $mess. Попробовал, не получилось. Заранее спасибо, Денис Это сообщение отредактировал(а) korob2001 - 18.6.2004, 17:21 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
korob2001
я такую проблему решал просто экранируя все спец символы: $@.[]{}()\/ Т.е. добавляю / Добавлено @ 17:44 Дело в том, что /$m/ - подставляет символы в // и например если у тебя $m=".*" то /$m/ всегда будет верным. |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Secandr
Что ты подразумеваешь под словом экранирование? Если это перекрытие специальных символов обратым слэшем, то они ведь тоже пропишутся в файл, что не желательно. Хотя можно удалить их после проверки или содать, временную, копию переменной $mess. Сверять копию а в файл прописать оригинал, если условие выполнено. Всё же мне что-то подсказывает что можно найти более оптимальный вариант. Что думаешь?
Да, я знаю, что регулярное выражение вида m/.*/ всегда истенна, даже если строка будет пустой. Но в моём случае она не будет пустой. Так как проверка на заполнение происходит чуть раньше. Если поле пустое, то программа завершается и просит заполнить поля. Код написанный выше не позволяет ввести, случайно, сообщение 2 раза подряд. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| achmed |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 12.4.2004 Репутация: нет Всего: нет |
а зачем здесь использовать РВ ?
что нельзя просто сравнить строки ? if ($mess eq $_ ) { .. |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
korob2001
Я делал временую копию строки, экранировал, проверял и удалял копию. Хотя задача была немного другая. |
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Каждая строка в файле примерно такого вида: Имя=email=сообщение=время добавления\n Получается сначала нужно разбить строку split'ом, тогда можно будет сравнить строки. Но при таком раскладе мне кажется что производительность будет не высокая.
Я тоже так сделал, вроде работает нормально. Спасибо за помощь. Это сообщение отредактировал(а) korob2001 - 19.6.2004, 17:04 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |