#!/usr/bin/perl -- use strict; use warnings; use Capture::Tiny qw/ capture /; ... #~ my @cmd = ( $^X , 'foo.cgi', qw/ a=A b=B c=C/ ); my @cmd = ( $^X , 'foo.cgi', CGI->new->self_url ); my( $stdout, $stderr, $exit ) = capture { system { $cmd[0] } @cmd; };;