#!/usr/bin/perl use warnings; use strict; use IPC::Run qw( run timeout ); my $return = ( suba("XYZ") == 0 ) ? "success" : "failure"; print "return = $return\n"; sub suba { my $job = shift; if ( $job =~ /^XYZ/ ) { my @return = subb(); my $exit = shift @return; print "exit = $exit\n"; print "$_\n" for @return; } } sub subb { my @command = ('ls', '-la'); my ( $buff, $in, $err ); my $exit; run \@command, \$in, \$buff, \$err, timeout(10) and $exit = $?; print "exit = $exit\n"; my @return; push (@return, $exit, $buff); print "$_\n" for @return; return @return; }