1

如何在我的 Perl 代码中创建一个事件处理程序来拦截所有基于文件/目录/系统的调用,以便我可以及时处理输入。

我的脚本中有很多 IO 访问权限,并且我发现添加手动代码以消除污染很麻烦。

这可以在不需要安装第三方 CPAN 模块的情况下完成吗?

4

2 回答 2

1

您可以尝试采用面向方面的方法,但它确实需要安装 CPAN 模块Aspect

要捕获对特定方法/函数的调用,您需要定义一个切入点(取自 Aspect POD):

$pointcut = call qr/^Person::[gs]et_/; # defines a collection of events

然后定义调用前要使用的代码:

$before = before {
  print "g/set will soon be called";
} $pointcut;

虽然我不确定 Aspect 模块是否允许您捕获对 CORE::* 命名空间的调用。

于 2010-02-08T06:16:41.160 回答
1

如何期望不污染一般数据?如果你只是盲目地接受一切,不管它的来源,那么使用污点检查是没有意义的。

您可能想阅读Mastering Perl中的“安全编程技术”一章。对于处理这类事情,我给出了很多建议。但是,任何好的建议都将针对特定情况,而不是一概而论。

于 2010-02-08T08:32:44.753 回答