#!/usr/bin/perl use strict; use warnings; open my $cmd, "-|", "(SHELL_COMMAND | sed 's/^/stdout:/') 2>&1"; my $stdout; my $stderr; while( <$cmd> ) { if( s/^stdout:// ) { $stdout .= $_; } else { $stderr .= $_; } } close $cmd; print "This is stdout:\n$stdout"; print "This is stderr:\n$stderr";