It doesn't seem that IO::Run just concatenates the dereferenced array. At least I didn't see in the doc where they exampled that. The closest I see is something like: run \@cat, '>&', \$out_and_err Which is a different animal entirely. I think with your syntax run() is trying to execute /bin/cpio then a command -iov and then a command >$tape. The second problem is that -iov is neither a command nor an argument. It is part of the command cpio. Try run ["/bin/cpio -iov"], '>', ["$tape"];
s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s
|-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,,
$|=1,select$,,$,,$,,1e-1;print;redo}