perl:获取一个新的文件描述符以将标准输入重定向到

perl: get a new file descriptor to redirect stdin to

        my $EXE = FileHandle->new;
        my $fd = 3; # <-------- doest work
        open $EXE, q{-|},
            "$myexe make 2>&1 <%=$fd"
            or die('Cannot open EXE');
        $err = !(close $EXE);

我想将 stdin 重定向到某个虚拟文件描述符(最好不必打开文件)。

2>&1 重定向 stdin 之后我该怎么做?

2>&1    # Dups fd 1 onto fd 2

所以

0<&3    # Dups fd 3 onto fd 0
<&3     # "<" affects fd 0 by default

所以

open(my $from_child, '-|', "foo 2>&1 <&$fd")

我不禁想知道你为什么要这样做。它是使用 IPC::Run3 or IPC::Run 可以做得更好的事情的一部分吗?