in reply to Connecting Perl's STDIN and STDOUT to .Net StreamReader

This a .net question, not a perl question I think, so you're not quite a the right place. Just a wild guess:
si.Arguments = "-ne \"print qq($_\n)\" "; si.UseShellExecute = false;
If the shell is not used, do you even need these additional quotes? If I'd do it in perl, the arguments to system or a pipe open would be ('-ne', 'print qq($_\n)')

Mind you I don't know any .net at all, so it might be something completely different.