![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
shamber |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Всем здравствуйте.
Возникла следующая проблемка. мне неоходимо передавать hash, через STDIN. как мы уже разобрались для этой задачи прекрасно Storable freeze и thaw так вот возникла следующая проблема. чтение данных происходит следующим образом
Данные я передаю таким образом, чтобы $buffer->[0] наименование команды; $buffer->[1] данные полученные с помощью freeze; Но если после преобразования с помощью freeze в строке будет содержаться символ перевода строки(надеюсь правильно его назвал \n) то данные лягут также и в $buffer->[2], чего-бы мне не хотелось. вообщем я решил использовать такой фокус перед отправкой заменять
а при приеме назад восстанавливать. Но проблема в том, что это почему-то не всегда срабатывает. В прикрепленом файле номер 1 содержится hash, записанный через store. т.е.
Во втором файле находится находятся данные полученные с помощью
Как видно в обоих файлах есть перевод строки Как доработать регулярку? Это сообщение отредактировал(а) shamber - 1.9.2008, 16:43 Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
||||||||
|
|||||||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Так и не понял как прикрепить второй файл в одно сообщение
Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемый shamber, почему не вставить команду внутрь хэша?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Уважаемый ginnie,прошу прощения я не совсем понял ваш вопрос. Что вы имеете ввиду?
Это сообщение отредактировал(а) shamber - 1.9.2008, 17:48 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Я подумал, что лучше обойтись без замены символов конца строки, поэтому предложил поместить значение $buffer->[0] внутрь хэша. При этом читать данные из потока целиком. Похоже, что я был не прав, т.к. не учел, что могут передаваться несколько сериализованных хэшей.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
||||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
До сериализации на стороне отправителя добавлять в хэш ключ c уникальным (для хэша) именем и значением, которое вы передаете перед сериализованным хэшем в Вашем варианте.
Это сообщение отредактировал(а) ginnie - 1.9.2008, 18:12 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
shamber, что касается изменения регулярного выражения - два существенных вопроса,
как правило символ перевода каретки - \r, не присутствует в файлах созданных под никсовой платформой(под FreeBSD точно), т.е. в зависимости от операционной системы, нужно правильно обрезать символ конца строки. И во-вторых, зачем между \r и \n знак вопроса?? Как правило, лично мне, для того чтобы убрать "конец строки" пока достаточно было лишь
В твоем случае, очевидно
![]() -------------------- менеджер по кодеврайтингу ![]() |
||||
|
|||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Bulat, ? как раз обеспечивает кросс-платформенность в данном случае (хотя еще лучше заменить \r и \n на \015 и \012 соответственно).
\r?\n можно прочитать как "один необязательный символ возврата каретки (ноль или один) и один символ перевода строки" Это сообщение отредактировал(а) KSURi - 2.9.2008, 22:43 -------------------- Died at Life.pl line 21 |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
KSURi, я правильно понял,что лучше
|
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Ага. Почитать про это можно здесь
-------------------- Died at Life.pl line 21 |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Это я потом понял, но сколько лично я не работал, мне всегда было достаточно [\r\n] ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
Это сообщение отредактировал(а) gcc - 3.9.2008, 17:00 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |