use strict; use warnings; use IPC::Run 'run'; my $code = q{ print "Real user id: $<\n"; warn "Effective user id: $>\n"; }; my ($stdout, $stderr); { local $< = local $> = 500; run [ qw/perl -e/, $code ], '>>', \$stdout, '2>>', \$stderr; } print "STDOUT was: $stdout"; print "STDERR was: $stderr";