my @loggers; # array of file handles my @logpids; # array of pids for open file handles ... # in branch of case statement for starting a new logger: my $args = "whatever is appropriate..."; my $pid = open( $loggers[@loggers], "logger_script $args |" ) or die "can't run logger_script: $!" ); push @logpids, $pid; ...