0

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

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

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

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

我想做的是将它指向一个函数:

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

wheref是一个函数,它接受一个参数,一个文件句柄,然后可以从该文件句柄中读取它认为合适的内容,并随心所欲地写入。

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

任何允许我将文件句柄定向到子例程的方式(或任何库)?我不介意幕后的库是否执行 a fork(),我只是想避免将数据传送到 shell 脚本的混乱。

4

1 回答 1

1

当您希望代码具有变量的接口时,您希望对tie变量进行编码。请参阅Tie::Handle

于 2013-02-15T06:05:35.967 回答