我正在研究一个用Perl编写的相当复杂的应用程序。我对这门语言有相当的经验,但是我很困难。当在另一个包中调用核心函数时如何最好地覆盖/包装核心函数
我正在使用一个模块Foo,它将sysread和syswrite用于文件句柄(本例中为双向套接字)上的各种操作,并传递给它的构造函数。
我要做到以下几点:从另一个模块,我写,(让我们称之为吧),我想改变这种状况sysread执行/的方式写行为从属于方法中调用的Foo只有当
Sysread等人需要像其他地方一样正常工作。可以安全地假定在Foo中sysread的使用不会改变。
的原因我想做到这一点的是,我需要跟踪被读取/写入前面提到的文件句柄的字节数。在这一点上,这似乎是我可以得到这些信息的唯一方式 - 基本上可以从sysread/write保存返回值。
使用CPAN中的任何东西都没有问题,只要质量好。
更新:我发现了一个更好的解决方案,以我的具体问题,并张贴在这里的代码:
https://github.com/Hercynium/Tie-Handle-CountChars
似乎在我的应用程序中工作得很好,但我赢了”不要张贴它到CPAN,直到我已经更彻底地测试它,再加上写下一些实际的单元测试:)
它发生,我认为我可能能够通过捆绑文件句柄变量来实现我的目标。我从来没有做过 - 提示欢迎 - 但我会发布,如果我想出有用的东西。 – Hercynium 2011-05-20 00:16:47
在这里工作的可能的解决方案:https://github.com/Hercynium/Tie-Handle-CountChars 它仍然有一个错误,即捆绑的文件句柄不能正确关闭时,它是一个socket在anyevent下。 – Hercynium 2011-05-24 01:20:26