What you describe here is a pretty strange sementics, at least for me, socialized on Linux. As far as I can understand you, you require that two or more processes write to the same pipe and the other side, by some miraculous way, can still distinguish between the senders of data. I do not know any facilities on Linux that can provide this to you (but I did not know about sysV streams either, before reading your post, so I might not be relevant here).
However, for me it seems that the only cause you want to do that is to be able to use a C program further, just for the purpose of logging. I know that you might not like this recommendation, but why not get rid of the C program then, and just use some native Perl logging facility, like log4perl? This may save you serious headaches in the long run -- at least, for me it did...:-)