Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача Hash через STDIN 
:(
    Опции темы
shamber
Дата 26.8.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Здравствуйте,
возникла необходимость общаться двум программам с помощью STDIN, STDOUT.

Подскажите как передать hash, и получить в другой программе.

передаю так
Код

store_fd \%color, \*STDOUT;


по логике получать должен
Код

fd_retrieve \%table, \*STDIN;


но у меня есть проблема. в другой программе STDIN я получаю уже как строку. и Storable пишет , что на входе не GLOB. Как быть?
Есть ли что-то типа
Код

fd_retrieve \%table, $string;

?

Это сообщение отредактировал(а) shamber - 26.8.2008, 16:38
PM MAIL Jabber   Вверх
ginnie
Дата 26.8.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый shamber, попробуйте IO::String.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
vadiml
Дата 26.8.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



shamber

вы пытаетесь передать указатель на хеш в другую программу, а т.к. у неё своё адресное пространство, то ваш указатель в программе-получателе ничего не значит (да и вообще perl весьма активно зачищает за собой память -- даже если просто указатель сохранить указатель как строку и выйти за пределы блока существования самого объекта, объект моментально уничтожается)

переведите хеш в дамп и передайте его как строку, например как указано выше посредством IO::String, а в программе получателе восстановите хеш из дампа.
PM MAIL Jabber   Вверх
ginnie
Дата 26.8.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый vadimlshamber уже использует модуль Storable для сериализации хэша, проблема у него в том, что в другой программе ему необходимо сделать десериализацию, но вместо файлового дескриптора у него там строка, а Storable требует файловый десткриптор. 


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
gcc
Дата 26.8.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Data::Dumper ?
PM WWW ICQ Skype GTalk Jabber   Вверх
arto
Дата 26.8.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 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
        };

PM MAIL ICQ   Вверх
sir_nuf_nuf
Дата 26.8.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Если говорим о Storable, то можно использовать freez и thaw для сериализации в строку


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
shamber
Дата 26.8.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



sir_nuf_nuf,
 freeze и thaw сериализируют в память, мне казалось(хоть и не проверял), что у разных скриптов разная память.

Добавлено @ 21:35
ginnie, спасибо, я думаю это то что нужно.

ЗЫ, щас какой-то глюк был и у меня в сообщении  ginnie превратилось в [Б]гинние[/Б]

Это сообщение отредактировал(а) shamber - 26.8.2008, 21:38
PM MAIL Jabber   Вверх
sir_nuf_nuf
Дата 26.8.2008, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



shamber,  freez сериализует в обычный скаляр. его можно передать через пайп.

Код

nuf@nuftop:~$ perl -MStorable -e 'print Storable::freeze({a => 1, b => 'howdy'})' | perl -MStorable -e '$/ = undef; $a = Storable::thaw(<>); print $a->{b}'
howdy


З.Ы. Этот глюк включается чекбоксом "Транслит", слева, чуть ниже смайликов =)


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
shamber
Дата 28.8.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



sir_nuf_nuf, спасибо за предложение. 

использовал вариант с thaw
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.