#! /usr/bin/env perl use strict; use warnings; # Dieser Ansatz hat den Nachteil, dass, wenn lange Zeit keine Zeile # ausgegeben wird, die while-Schleife "haengt" und auf die naechste # zu lesende Zeile wartet; da ist egal, wieviel Zeit verstrichen ist. my $command = '/bin/bash /tmp/testscript'; # Zeitstempel, wann das Skript gestartet wurde my $starttime = $^T; # Ausgabe soll alle $delta Sekunden erfolgen my $delta = 6; open( my $pipe, '-|', $command ) or die "Could not open pipe from '$command': $!\n"; # Zum Start geben wir die erste gelesene Zeile aus print scalar <$pipe>; # Zeilenweise lesen while ( my $line = <$pipe> ) { # pro Zeile aktuellen Zeitstempel holen my $now = time(); # wenn mehr als $delta vergangen ist, Zeile ausgeben if ( $now - $starttime >= $delta ) { printf "%s", $line; # Startzeit anpassen, damit die Differenz für den # naechsten Check wieder passt $starttime += $delta; } } __END__