#!/usr/bin/perl use strict; use warnings; do_all(); ######################################################################## ######################################################################## sub do_all { my $fh1=do_first(); my $fh2=do_next(); print "FIRST: ".<$fh1>."\n"; print "NEXT: ".<$fh2>."\n"; close($fh1) or die "ERROR close fh1 ($!)\n"; close($fh2) or die "ERROR close fh2 ($!)\n"; } sub do_first { return do_cmd('sleep 1 && echo "FIRST"'); } sub do_next { return do_cmd('sleep 1 && echo "NEXT"'); } sub do_cmd { my $cmd=shift(@_); my $fh; open($fh, "$cmd |") or die "Error open \"$cmd\" ($!)\n"; return $fh; }