![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
shamber |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Здравствуйте,
возникла необходимость общаться двум программам с помощью STDIN, STDOUT. Подскажите как передать hash, и получить в другой программе. передаю так
по логике получать должен
но у меня есть проблема. в другой программе STDIN я получаю уже как строку. и Storable пишет , что на входе не GLOB. Как быть? Есть ли что-то типа
? Это сообщение отредактировал(а) shamber - 26.8.2008, 16:38 |
||||||
|
|||||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемый shamber, попробуйте IO::String.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
shamber
вы пытаетесь передать указатель на хеш в другую программу, а т.к. у неё своё адресное пространство, то ваш указатель в программе-получателе ничего не значит (да и вообще perl весьма активно зачищает за собой память -- даже если просто указатель сохранить указатель как строку и выйти за пределы блока существования самого объекта, объект моментально уничтожается) переведите хеш в дамп и передайте его как строку, например как указано выше посредством IO::String, а в программе получателе восстановите хеш из дампа. |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемый vadiml, shamber уже использует модуль Storable для сериализации хэша, проблема у него в том, что в другой программе ему необходимо сделать десериализацию, но вместо файлового дескриптора у него там строка, а Storable требует файловый десткриптор.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
Data::Dumper ?
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -MStorable=store_fd -e 'store_fd { a => 1,b => 2,c => 3 },\*STDOUT' | perl -MStorable=fd_retrieve -MData::Dumper -e 'print Dumper fd_retrieve \*STDIN'
$VAR1 = { 'c' => 3, 'a' => 1, 'b' => 2 }; |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Если говорим о Storable, то можно использовать freez и thaw для сериализации в строку
|
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
sir_nuf_nuf,
freeze и thaw сериализируют в память, мне казалось(хоть и не проверял), что у разных скриптов разная память. Добавлено @ 21:35 ginnie, спасибо, я думаю это то что нужно. ЗЫ, щас какой-то глюк был и у меня в сообщении ginnie превратилось в [Б]гинние[/Б] Это сообщение отредактировал(а) shamber - 26.8.2008, 21:38 |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
shamber, freez сериализует в обычный скаляр. его можно передать через пайп.
З.Ы. Этот глюк включается чекбоксом "Транслит", слева, чуть ниже смайликов =) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
sir_nuf_nuf, спасибо за предложение.
использовал вариант с thaw |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |