open my $CMD, '-|', 'ls 2>&1' or die $!; while (<$CMD>) { print if /\.xml/; } close $CMD or die $! ? 'Pipe failed' : 'Program error: ' . ($? >> 8) ;