The reason behind this is Windows does not understand the | character on the command line, therefore you need to explicitly declare what are arguments and what is your opening mode. If you need to be even more explicit (and you're running a Perl > 5.6, I think) you could also say: open(STATUS, "-|", "ipconfig", "arg_1", "arg_2") or die "ACK, GASP: Cannot fork: $! ";