sub cmd_wrapper { my $cmd = shift; my @out; eval { local $SIG{ALRM} = sub { die "alarm\n" }; alarm 15; ## (CSV output logged) ## @out = qx[$cmd]; #<<<<< Shell out ## (CSV output *NOT* logged) ## alarm 0; }; return $@ if $@ ne "" return wantarray ? @out : join '', @out; }