#!/usr/bin/perl use strict; use warnings; my @Types = ('A', 'B'); my %ScriptName; my %IsFinished; my %ProcesseHandle; foreach my $Type (@Types) { $ScriptName{$Type} = $Type . '.ksh'; $IsFinished{$Type} = 0; if(!open($ProcesseHandle{$Type}, "$ScriptName{$Type}|")) { WarnLog("Unable to run Script:[$ScriptName{$Type}]:\n$^E:\n$!:\nError Number $?:$@ "); } } while(!$IsFinished{'A'} or !$IsFinished{'B'}) { my %Line; foreach my $Type (@Types) { if(!$IsFinished{$Type}) { $Line{$Type} = <$ProcesseHandle{$Type}>; if(!defined($Line{$Type})) { $IsFinished{$Type} = 1; } print("\[$Type\]\[$Line{$Type}\]\n"); } } }