use strict; use warnings; use POSIX qw( dup2 ); open(my $src1_fh, '-|', echo => 'apples') or die("open: $!"); open(my $src2_fh, '-|', echo => 'oranges') or die("open: $!"); dup2(fileno($src1_fh), 63) or die("dup2: $!"); dup2(fileno($src2_fh), 64) or die("dup2: $!"); system(diff => '/dev/fd/63', '/dev/fd/64') >= 0 or die("system: $!"); printf("\$?=%04X\n", $?);