Perl: запустить програмку из скрипта и дать STDIN и STDOUT

User avatar
theukrainian
Уже с Приветом
Posts: 2506
Joined: 13 Jan 2003 22:34
Location: Kiev :: Los Angeles, CA

Perl: запустить програмку из скрипта и дать STDIN и STDOUT

Post by theukrainian »

Добрый день, я в Perl даже не ноль, а минус :)

Ворпос: как зазвать програмку из perl. Трюк в том что програмка берет command-line arguments, читает input из stdin, и пишет output в stdout.

Один вариант: написать input в file, а потом зазвать $out = `hello < $infile`;

A mozhno li bez темпорары fajlov?

spasibo,

denis
User avatar
f_evgeny
Уже с Приветом
Posts: 10373
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Re: Perl: запустить програмку из скрипта и дать STDIN и STDO

Post by f_evgeny »

theukrainian wrote:Добрый день, я в Perl даже не ноль, а минус :)

Ворпос: как зазвать програмку из perl. Трюк в том что програмка берет command-line arguments, читает input из stdin, и пишет output в stdout.

Один вариант: написать input в file, а потом зазвать $out = `hello < $infile`;

A mozhno li bez темпорары fajlov?

spasibo,

denis

$pid = open(WRITEME, "| program args");
print WRITEME "hello\n"; # program will get hello\n on STDIN
close(WRITEME); # program will get EOF on STDIN
Дальше, все будет только хуже. Оптимист.
User avatar
f_evgeny
Уже с Приветом
Posts: 10373
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Re: Perl: запустить програмку из скрипта и дать STDIN и STDO

Post by f_evgeny »

theukrainian wrote:Добрый день, я в Perl даже не ноль, а минус :)

Ворпос: как зазвать програмку из perl. Трюк в том что програмка берет command-line arguments, читает input из stdin, и пишет output в stdout.

Один вариант: написать input в file, а потом зазвать $out = `hello < $infile`;

A mozhno li bez темпорары fajlov?

spasibo,

denis

Если надо оба, вход и выход:
use IPC::Open2;

open2(*README, *WRITEME, $program);
print WRITEME "here's your input\n";
$output = <README>;
close(WRITEME);
close(README);
Дальше, все будет только хуже. Оптимист.
User avatar
theukrainian
Уже с Приветом
Posts: 2506
Joined: 13 Jan 2003 22:34
Location: Kiev :: Los Angeles, CA

Re: Perl: запустить програмку из скрипта и дать STDIN и STDO

Post by theukrainian »

f_evgeny wrote:
theukrainian wrote:Добрый день, я в Perl даже не ноль, а минус :)

Ворпос: как зазвать програмку из perl. Трюк в том что програмка берет command-line arguments, читает input из stdin, и пишет output в stdout.

Один вариант: написать input в file, а потом зазвать $out = `hello < $infile`;

A mozhno li bez темпорары fajlov?

spasibo,

denis

Если надо оба, вход и выход:
use IPC::Open2;

open2(*README, *WRITEME, $program);
print WRITEME "here's your input\n";
$output = <README>;
close(WRITEME);
close(README);

Спасибо. Это то что нужно, помоему.

денис
User avatar
theukrainian
Уже с Приветом
Posts: 2506
Joined: 13 Jan 2003 22:34
Location: Kiev :: Los Angeles, CA

Re: Perl: запустить програмку из скрипта и дать STDIN и STDO

Post by theukrainian »

theukrainian wrote:
f_evgeny wrote:Если надо оба, вход и выход:
use IPC::Open2;

open2(*README, *WRITEME, $program);
print WRITEME "here's your input\n";
$output = <README>;
close(WRITEME);
close(README);

Спасибо. Это то что нужно, помоему.

денис

Маленькая поправка: работает только когда я закрываю handle WRITEME перед тем как читать из README. Иначе, скрипт ждет input. Я пытался посылать ^D, добавляя его к моей input string, но такое не канает :(

Все равно, спасибо :) Вроде как заработало.

денис

Return to “Вопросы и новости IT”