什么是源过滤器?

Zai*_*aid 14 perl source-filter

每当我看到术语源过滤器时,我都会想知道它的含义.

除了正式的定义之外,我认为一个例子也有助于将消息传递回家.

Joe*_*ger 19

源过滤器是在评估之前修改其他一些代码的模块.因此,执行的代码不是程序员在编写时看到的代码.您可以在以下位置阅读有关源过滤器(在Perl上下文中)的更多信息perldoc perlfilter.一些示例Smart::Comments允许程序员在代码中的注释中保留调试命令并仅在需要时使用它们,另一个PDL::NiceSlice例子是用于切片PDL对象的糖.

编辑:

有关使用的更多信息(如果您想要勇敢的野兽),请阅读文档,Filter::Simple这是创建过滤器的典型方法.

或者,有一种新的和不同的方式来解决源:Devel::Declare让你与Perl自己的解析器交互,让你做许多与源过滤器相同类型的东西,但没有源过滤器.这在某些方面可以"更安全",但其范围更为有限.


dus*_*uff 7

源过滤器是模块的形式,其影响其中文件的方式use-ing它将被解析.它们通常用于模拟Perl本身没有的语法特性 - 例如,Switch源过滤器通常用于在Perl given { }构造可用之前模拟switch语句.

源过滤器的工作方式是将模块文本作为输入,对其执行一些处理,然后输出过滤后的源代码.有关如何实现源过滤器的简单示例以及更多详细信息,请参阅perlfilter的perldoc页面.