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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl object and STDIN, Доступ к STDIN при вызове метода объекта 
:(
    Опции темы
kahlua
Дата 15.6.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Коллеги. возник непонятный момент, а "нагуглить" .... ничего толкового не получилось.
Суть такая. Есть модуль и для него нужно создать набор тестов. При создание тестов натолкнулся на  новую для себя ситуацию. Ситуация такая - в  одном из тестов я создаю перл-объект, ему доступен ряд методов. При вызове необходимого для меня метода у объекта, открывается STDIN (через вызов функции read ) на который требуется предать xml-ку. Когда запускаю тест в консоли, понятное дело, что тест останавливается когда вызывается функция read... Так вот, каким образом (может есть какая готовая либа) можно "зашарить" открытый дейскритор ввода и в самом тест-кейсе передать в него необходимые данные? Подозреваю, что должне быть готовый модуль с небходимым функционалом :(
Thx!

Это сообщение отредактировал(а) kahlua - 15.6.2010, 12:25
PM MAIL   Вверх
dva300
Дата 15.6.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

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



Цитата(kahlua @ 15.6.2010,  12:25)
Коллеги. возник непонятный момент, а "нагуглить" .... ничего толкового не получилось.
Суть такая. Есть модуль и для него нужно создать набор тестов. При создание тестов натолкнулся на  новую для себя ситуацию. Ситуация такая - в  одном из тестов я создаю перл-объект, ему доступен ряд методов. При вызове необходимого для меня метода у объекта, открывается STDIN (через вызов функции read ) на который требуется предать xml-ку. Когда запускаю тест в консоли, понятное дело, что тест останавливается когда вызывается функция read... Так вот, каким образом (может есть какая готовая либа) можно "зашарить" открытый дейскритор ввода и в самом тест-кейсе передать в него необходимые данные? Подозреваю, что должне быть готовый модуль с небходимым функционалом :(
Thx!

возможно я не правильно понял но "зашарить" STDIN можно следующим образом....

Код

use strict;
open(INCOPY,"<&STDIN");
open(STDIN,"<file.txt");
# Прочитает STDIN из файла
print &read_();
close(STDIN);
open(STDIN,"<&INCOPY");
# STDIN обычный 
print &read_();
sub read_
    {
    my $buffer;
    my $bytes = read(STDIN,$buffer,10);
    return "$buffer";
    }

--------------------
Участник движения Культура Вождения
PM   Вверх
kahlua
Дата 15.6.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



dva300,  да не, как зашарить дескриптор в рамках императивного\процедурного подхода - не проблема.
В моем случае, ситуация иная - когда вызываю у объекта требуемый метод, то последний имеет точку вызова чтения данных через SDTIN. Я пытался "похачить" эту ситуацию, но все одно не получается :(
PM MAIL   Вверх
arto
Дата 15.6.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ok (open F,"| $^X $path_to_script","run script");
...
PM MAIL ICQ   Вверх
dva300
Дата 15.6.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

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



Цитата(kahlua @ 15.6.2010,  13:30)
dva300,  да не, как зашарить дескриптор в рамках императивного\процедурного подхода - не проблема.
В моем случае, ситуация иная - когда вызываю у объекта требуемый метод, то последний имеет точку вызова чтения данных через SDTIN. Я пытался "похачить" эту ситуацию, но все одно не получается :(

хм... а вы пробовали ? 


Это сообщение отредактировал(а) dva300 - 15.6.2010, 13:51
--------------------
Участник движения Культура Вождения
PM   Вверх
kahlua
Дата 15.6.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Цитата

хм... а вы пробовали ? 


dva300, не, мне просто делать нечего, вот я и решил "помучить знатоков" smile
Конечно пытался :( может не до конца механизм понимаю.  Попытаюсь еще раз в первоисточниках покопаться (Камелбук&Кукбук)
PM MAIL   Вверх
dva300
Дата 15.6.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

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



Цитата(kahlua @ 15.6.2010,  14:32)
Цитата

хм... а вы пробовали ? 


dva300, не, мне просто делать нечего, вот я и решил "помучить знатоков" smile
Конечно пытался :( может не до конца механизм понимаю.  Попытаюсь еще раз в первоисточниках покопаться (Камелбук&Кукбук)

STDIN всегда был один 

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


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

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


 




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


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

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