Perl 重定向到子程序,而不是文件或外部命令

Perl 重定向到子程序,而不是文件或外部命令,perl,filehandle,Perl,Filehandle,我知道我可以打开文件句柄并将其重定向到如下文件: open(HANDLE, ">", "filename.txt"); 我还可以将其重定向到如下命令: open(HANDLE, "|-", "grep hello"); 我想做的是将其指向一个函数: open(HANDLE, "|func", f); 其中,f是一个函数,它接受一个参数,即一个文件句柄,然后可以根据需要从该文件句柄中读取,然后按照自己的意愿写入 我知道我可以通过创建一个包含f(FILEHANDLE)的新文件来模拟这一点

我知道我可以打开文件句柄并将其重定向到如下文件:

open(HANDLE, ">", "filename.txt");
我还可以将其重定向到如下命令:

open(HANDLE, "|-", "grep hello");
我想做的是将其指向一个函数:

open(HANDLE, "|func", f);
其中,
f
是一个函数,它接受一个参数,即一个文件句柄,然后可以根据需要从该文件句柄中读取,然后按照自己的意愿写入

我知道我可以通过创建一个包含
f(FILEHANDLE)
的新文件来模拟这一点,但这有一些问题,例如,如果
f(FILEHANDLE)
的行为有时会改变,而不是生成一个函数
g(option1,option2)
,该函数接受参数并返回函数
f(FILEHANDLE)
,在单独的文件中,我们需要传递命令行参数,以及命令行引用等所有问题


任何允许我将文件句柄指向子例程的方法(或任何库)?我不介意后台的库是否执行了
fork()
,我只是想避免将数据管道化到shell脚本的混乱。

如果希望代码具有变量的接口,则希望
代码绑定到变量。请参阅。

我不确定这些如何实现我的要求,即如何打开函数的文件句柄。我不想要变量的接口。
HANDLE
是一个变量。您希望在打印到该句柄的
上调用函数,而不是该变量的正常操作。我想你已经回答了我的问题,但它似乎无法处理
system()
调用的输出。我在这里提出了另一个问题: