in reply to Non-shell-invoking system/exec and qx//

I wrote exe() and bg() for that purpose because I felt that IPC::* syntaxes were non-intuitive, IMHO.

Pipe processes and Perl subroutines together

Internally, both functions perform safe forking methods to ensure no child zombies.

Example to sort & number the list of /tmp files:
use Exe; my @pids = &{ exe qw(ls /tmp), exe qw(sort -n), exe qw(cat -n), };