in reply to Stream processor?

The 2 major features I'm looking for are multiplexing (input stream can be converted into several output streams) and syntactic simplicity.

If by "multiplexing" you mean that a single input stream would be (selectively?) directed to some number of output file handles or separate sub-processes, I don't see a need for anything beyond the standard "open()" call. Open as many output file handles as you need, whether they refer to disk files or to processes (using open my $fh, '|-', "process", @args). (Update: this sounds to me like it might be "de-multiplexing" (demuxing for short), which is sort of the opposite of "multiplexing" (muxing).)

As for syntactic simplicity, you are either going to be doing a simple loop over file handles for each input record (print to each output in turn), or else you'll put the file handles into a "dispatch table" hash, and print to the ones you want according to whatever decision needs to be made on a record-by-record basis.