Pipe-Problem

Hallo,

ich möchte einige Zeilen Text von Perl aus einem Shell-Kommando an
dessen Standardeingabe übergeben und die Standardausgabe des
Shell-Kommandos wieder in eine Perl-Variable schreiben.

Was ich schon versucht habe:


$input = "zeile1 bla bla\nzeile2 abababab ababab\nzeile3 a b c\n";
$cmd = '/usr/bin/fmt -s -w 13';

open F, "| $cmd" or die "fork: $!";
local $SIG{PIPE} = sub { die "Pipe gebrochen" };
print F "$input";
close F or die "Pipe fehlerhaft: $! $?";


So läßt sich zwar der Input übergeben, aber die Ausgabe erfolgt über
STDOUT. Ich hätte die Ausgabe aber gerne in $output.

Mit Backticks kann ich hier wohl nicht mehr arbeiten.

Wie bekomme ich die Standardausgabe in eine Variable? Oder wie kann ich
das Problem sonst lösen?

TIA + Gruß
Til
Til Schubbe [ Mo, 19 Februar 2007 05:21 ] [ ID #1634099 ]

Re: Pipe-Problem

Post removed (X-No-Archive: yes)
Notifier Deamon [ Mo, 19 Februar 2007 09:04 ] [ ID #1634100 ]

Re: Pipe-Problem

Post removed (X-No-Archive: yes)
Notifier Deamon [ Mo, 19 Februar 2007 09:08 ] [ ID #1634101 ]

Re: Pipe-Problem

Til Schubbe!

> ich möchte einige Zeilen Text von Perl aus einem Shell-Kommando an
> dessen Standardeingabe übergeben und die Standardausgabe des
> Shell-Kommandos wieder in eine Perl-Variable schreiben.


use IPC::Open2;

my $res;
{
local $/;
my $pid = open2(*R, *W, "sort");
print W "$_\n" for ('c', 'a', 'd', 'b',);
close W;
$res = <R>;
close R;
waitpid $pid, 0;
}
print $res;



Gruß
Daniel
Daniel Fischer [ Mo, 19 Februar 2007 09:43 ] [ ID #1634102 ]

Re: Pipe-Problem

Til Schubbe <usenet [at] lists.schubbe.org> wrote:
> ich möchte einige Zeilen Text von Perl aus einem Shell-Kommando an
> dessen Standardeingabe übergeben und die Standardausgabe des
> Shell-Kommandos wieder in eine Perl-Variable schreiben.

perldoc -q pipe

-dnh

--
Tower to pilot: "Air traffic 3 o'clock!"
Pilot to tower:" Give us another hint, we have digital watches..."
David Haller [ Di, 20 Februar 2007 01:02 ] [ ID #1635213 ]
Perl » de.comp.lang.perl.misc » Pipe-Problem

Vorheriges Thema: MIME::Explode - Fehler abfangen
Nächstes Thema: CPAN Problem