if (eval { require Capture::Tiny } ) { print "Using Capture::Tiny\n"; use subs qw/capture/; Capture::Tiny -> import ( qw/capture/ ); ( $SpoolFile -> [0], $CMDERR[0], $ReturnCode ) = capture { system qq[ echo Hello, World | cat ]; } } elsif (eval { require IPC::Run } ) { print "Using IPC::Run\n"; use subs qw ( run new_chunker start pump finish timeout ); IPC::Run -> import ( qw (run new_chunker start pump finish timeout ) ); ... }