#!/usr/bin/env perl use strict; use warnings; my ( $stdout, $stderr, $errcode ); if (eval { require Capture::Tiny } ) { print "Using Capture::Tiny\n"; ( $stdout, $stderr, $errcode ) = Capture::Tiny::capture( sub { system "echo Hello, World | cat"; } ) } elsif (eval { require IPC::Run } ) { print "Using IPC::Run\n"; no warnings qw{ qw }; # Otherwise Perl complains about the comma IPC::Run::run( [ qw{ echo Hello, World } ], \'', '|', [ 'cat' ], \$stdout, \$stderr ); } print "STDOUT: $stdout";