WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [Perl] capture program output (http://www.wcm.at/forum/showthread.php?t=106260)

SNo0py 21.08.2003 11:30

[Perl] capture program output
 
Hi Leute,

ich will den CD-Brenn-Vorgang unter GNU/Linux ein wenig mittels Perl automatisieren, d.h so eine Art "Wizard" für die Shell bauen.

mkisofs gibt auf der Konsole den aktuellen Status aus, bestehend aus den % finished und der vorraussichtlichen Dauer. Jeweils eine Zeile.

Jetzt will ich aber nicht den ganzen Screen auffüllen sondern immer nur die letzte Zeile am Schirm darstellen - wie geht das mit Perl?

Danke!

ruprecht69 21.08.2003 13:03

Stderr/Stdout redirecten

while (Zeilenweise einlesen)
{
Parsen
Eigenen Output ausgeben
}

fürn Terminal Steuerung auf CPAN suchen, evtl. Termcap etc.

SNo0py 21.08.2003 13:39

Und wohin redirecten? Wie sieht das genaue Codefragment aus?

helios 22.08.2003 08:34

den output von einem programm kannst du unter anderem so capturen:

Code:

my @output;
my $zeile;

@output = `ps -ef`;

foreach $zeile (@output)
{
  print $zeile;
}


SNo0py 22.08.2003 09:30

Ja, aber so bekomme ich den ganzen Output, das ist schon klar.

Ich will das parallel zum Perl-Script cdrecord läuft und die Ausgabe ständig einzeilig aktualisiert wird, d.h. sobald cdrecord eine Zeile auf STDOUT ausgibt, will ich die in meinem Perl-Script einlesen können.

helios 22.08.2003 09:35

ja hab auch grad mitbekommen, dass du das anders meinst.
aber mit open müssts gehen, da kriegst du synchron zeilenweise den output des aufgerufenen programms:

Code:

open (OUTPUT, "tail -f test.txt|") || die "can't fork: $!";
while (<OUTPUT>)
{
  print;
}



Alle Zeitangaben in WEZ +2. Es ist jetzt 07:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag