看看这里 Perl 方法调用可以被拦截吗?
它展示了如何为一个简单的 sub 重写符号表。打印命令可以获取我相信的列表,那么拦截/重写它的正确方法是什么?我希望得到一个程序来延迟打印,同时保持相同的签名,而是将输出推送到一个数组中,对其进行预排序,然后在最后反刍所有输出。
看看这里 Perl 方法调用可以被拦截吗?
它展示了如何为一个简单的 sub 重写符号表。打印命令可以获取我相信的列表,那么拦截/重写它的正确方法是什么?我希望得到一个程序来延迟打印,同时保持相同的签名,而是将输出推送到一个数组中,对其进行预排序,然后在最后反刍所有输出。
拦截print
本身不是可行的方法——它有多种操作模式,包括写入文件或套接字。相反,请查看select
函数,它可用于更改print
将写入的默认文件句柄。
此外,请查看IO::Capture使用的“绑定”IO 句柄的概念。