[Perl] вопрос про получение вывода утилиты из шелла (т.е. из ``).
почему нельзя вывод той команды в файл сохранить
потом открыть этот файл и его дескриптор передать куда надо?
тем более что wget по умолчанию в файл сохраняет а не в стдаут выдает содержимое
open
почему нельзя вывод той команды в файл сохранитьправа
Нде, проблема так и решилась, разрюхиванием прав и созданием временных файлов. Но что-то в этом направлении сделать всё равно можно.
в перле есть popen?
man perlipc
нет
open my $descriptor, '-|', 'wget blablabla -q -O -';
while(<$descriptor>)
{
...
}
я пытался сделать open (PIPE, "wget ... -O - |"); потом использовать <PIPE>, но так не работало, а по-твоему работает
О, пожалуйста. Почитай man perlopentut, там всё это подробно описано.
Всё таки в perlipc(1) более кошерные способы описаны
Какие ты имеешь в виду? Те, что в разделе Safe Pipe Opens?
Ага. Так чтобы без шелла вызвать команду, из которой будем потом stdout читать.
там тот же метод, что и у
Действительно, но только с версии 5.8.0.
Я года три назад на перле написал такую прогу, но куда то её задевал =( а писать по второму разу можно, но напрягает.
p.s. в принципе даже не важно, на каком языке, главное чтобы оно работало.
inetd ?
---
...Я работаю антинаучным аферистом...
спасибо за ответы!
Оставить комментарий
salora
Есть некоторая утилита написанная не на перле, которая в результате работы даёт некоторый вывод в STDOUT. Она вызывается в Пёрл-скрипте через `....`. Как поймать её вывод не в массив и т.п., а в некоторый файловый дескриптор?Цель такая:
wget скачивает ini файл, потом содержимое этого файла с помощью библиотеки libconfig загоняется в хеш хешей, но чтобы загнать туда, нужно иметь файловый дескриптор.