Forum Webscript.Ru

Программирование => Perl => Тема начата: viewsonic от 28 Февраля 2003, 17:09:55

Название: как сделать, помогите плиз!!!
Отправлено: viewsonic от 28 Февраля 2003, 17:09:55
Не знаю как сделать. Мне надо в рамках одного скрипта запустить программу, которая обрабатывает данные и шарахает их на стандартный вывод, а мне надо их как-то читать оттуда, как это сделать? Помогите плиз.
Название: как сделать, помогите плиз!!!
Отправлено: NeoNox от 28 Февраля 2003, 17:26:55
Подробнее. Что за скрипт, где и как...
И "шарахает" заменить на более подходяшее слово, не в подворотне ведь общаемся.
Название: как сделать, помогите плиз!!!
Отправлено: viewsonic от 28 Февраля 2003, 17:38:34
Прошу прощения за жаргон.
Сейчас работает так.
Скрипт запускает стороннюю прогу.

system("./any_prg > any_file");

open (F, "any_file"); # открываем файл

   while () {
     ..... # обрабатываем его по строчно
   }

а я хочу брать данные сразу, не записывая их во временный файл.
Название: как сделать, помогите плиз!!!
Отправлено: NeoNox от 28 Февраля 2003, 17:55:00
Вот таким образом подойдет?
$list = `ls -l /home/`;
print $list;
Название: как сделать, помогите плиз!!!
Отправлено: viewsonic от 28 Февраля 2003, 18:08:55
нет это не подходит.
так я получу список файлов, зачем мне это.
я хочу просто понять как сделать в рамках скрипта так называемую трубу.
Мой скрипт запускает программу, которая если запустить просто печатает на экран данные. Я же в скрипте ее запускаю так, что она печатает эти данные в файл, имя этого файла я задаю сам, а потом я этот файл открываю и читаю данные оттуда, а потом уже их обрабатываю.
Но меня эта схема не устраивает, временный файл большой и т.д.
Я хочу запускать эту программу в скрипте и ее результаты, минуя временный файл, получать и обрабатывать.
Вот.
Название: как сделать, помогите плиз!!!
Отправлено: mike от 28 Февраля 2003, 18:44:19
open FILE, "./any_prg |";
print ;
close FILE;

А по споcобу NeoNox будет то же самое, только проще. ;)

$list = `./any_prg`;
print $list;
Название: как сделать, помогите плиз!!!
Отправлено: NeoNox от 28 Февраля 2003, 19:08:06
mike Да похоже он хочет манипулировать полученными значениями.
Можно все это в массив загнать и далее уже с элементами массива работать.
Название: как сделать, помогите плиз!!!
Отправлено: mike от 28 Февраля 2003, 19:20:55
Цитировать
Можно все это в массив загнать и далее уже с элементами массива работать.


viewsonic
Кстати, тот же `` с этим здорово справляется.

@lines = `./any_prg`;
Название: как сделать, помогите плиз!!!
Отправлено: Chs от 28 Февраля 2003, 22:20:05
perldoc perlipc
:)
Название: как сделать, помогите плиз!!!
Отправлено: viewsonic от 03 Марта 2003, 00:06:02
Спасибо большое!
С массивом не пойдет, т.к. он получится очень большим, а вот с дескриптором попробую, наверное получится.
Еще раз спасибо.