Pipes unterbrochen

17/11/2007 - 01:31 von Dirk Zobel | Report spam
Hallo zusammen,

irgendwie stehe ich auf dem Schlauch.

In einem Skript soll das Programm sox aufgerufen werden und mir einen
Parameter zurückgeben, den ich in einer Variable speichern möchte. Leider
bleibt die Variable immer leer. Folgende Wege habe ich probiert:

#!/usr/bin/perl -w
$| = 1;
open(PIPE, "sox $Spoolfiles/tmp.wav -e stat -v|");
my(@Volume_Zeilen) = <PIPE>;
close(PIPE);
$| = 0;
my $Volume = $Volume_Zeilen[1];

alternativ:
my $Volume = `sox $Spoolfiles/tmp.wav -e stat -v`;

$Volume ist leider immer leer (""). Starte ich allerdings das Skript,
gibt sox allerdings sein Ergebnis auf der Konsole aus, von der das Skript
gestartet wurde. Das Ergebnis ist also da, sox arbeitet richtig, nur Perl
speichert es nicht. Wie bekomme ich das Ergebnis nun in die Variable?

Danke für Antworten,

Dirk
 

Lesen sie die antworten

#1 mlelstv
17/11/2007 - 08:52 | Warnen spam
Dirk Zobel writes:

$Volume ist leider immer leer (""). Starte ich allerdings das Skript,
gibt sox allerdings sein Ergebnis auf der Konsole aus, von der das Skript
gestartet wurde. Das Ergebnis ist also da, sox arbeitet richtig, nur Perl
speichert es nicht. Wie bekomme ich das Ergebnis nun in die Variable?



Die Ausgabe landet auf stderr, also:

my $Volume = `sox $Spoolfiles/tmp.wav -e stat -v >/dev/null 2>&1`;

Michael van Elst
Internet:
"A potential Snark may lurk in every tree."

Ähnliche fragen