[Perl] вопрос про получение вывода утилиты из шелла (т.е. из ``).

salora

Есть некоторая утилита написанная не на перле, которая в результате работы даёт некоторый вывод в STDOUT. Она вызывается в Пёрл-скрипте через `....`. Как поймать её вывод не в массив и т.п., а в некоторый файловый дескриптор?
Цель такая:
wget скачивает ini файл, потом содержимое этого файла с помощью библиотеки libconfig загоняется в хеш хешей, но чтобы загнать туда, нужно иметь файловый дескриптор.

pitrik2

не понял
почему нельзя вывод той команды в файл сохранить
потом открыть этот файл и его дескриптор передать куда надо?
тем более что wget по умолчанию в файл сохраняет а не в стдаут выдает содержимое

vall

open

salora

почему нельзя вывод той команды в файл сохранить
права

salora

Нде, проблема так и решилась, разрюхиванием прав и созданием временных файлов. Но что-то в этом направлении сделать всё равно можно.

yolki

в перле есть popen?

sergey_m

man perlipc

Olenenok

нет

sany79

Мне кажется, тебе нужно что-то вроде этого:

open my $descriptor, '-|', 'wget blablabla -q -O -';
while(<$descriptor>)
{
...
}

Olenenok

Спасибо!
я пытался сделать open (PIPE, "wget ... -O - |"); потом использовать <PIPE>, но так не работало, а по-твоему работает

sany79

О, пожалуйста. Почитай man perlopentut, там всё это подробно описано.

sergey_m

Всё таки в perlipc(1) более кошерные способы описаны

sany79

Какие ты имеешь в виду? Те, что в разделе Safe Pipe Opens?

sergey_m

Ага. Так чтобы без шелла вызвать команду, из которой будем потом stdout читать.

Olenenok

там тот же метод, что и у

sergey_m

Действительно, но только с версии 5.8.0.

Barbie29

не знаешь ли случайно программу, которая stdout, stderr & stdin любой консольной проги в сокет на определенный хост:порт пробрасывает чтобы к ней можно было коннектиться одновременно несколькими клиентами?
Я года три назад на перле написал такую прогу, но куда то её задевал =( а писать по второму разу можно, но напрягает.
p.s. в принципе даже не важно, на каком языке, главное чтобы оно работало.

Marinavo_0507

inetd ?

Ivan8209

${PKGSRCDIR}/net/netpipes
---
...Я работаю антинаучным аферистом...

Barbie29

2 &
спасибо за ответы!
Оставить комментарий
Имя или ник:
Комментарий: