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



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

open(HANDLE, ">", "filename.txt");

我还可以将其重定向到如下命令:

open(HANDLE, "|-", "grep hello");

我想做的是将其引导到一个函数:

open(HANDLE, "|func", f);

其中f是一个函数,它接受一个参数,一个文件句柄,然后可以根据需要从该文件句柄中读取,并根据需要进行写入。

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

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

当您希望代码具有变量的接口时,您希望tie代码到变量。请参见领带::手柄。

最新更新