sub foo { my $captured_printed_data; my $SH = tie *STDOUT, 'IO::Scalar', \$captured_printed_data; $return_data = eval $module_code; $return_data = "$captured_printed_data \n$return_data" if(defined($captured_printed_data) || ($captured_printed_data ne '')); close $SH; untie *STDOUT; return $return_data; }