我经常使用Data :: Dumper,最后我的.pl代码中每个包的顶部都有以下样板文件.
use strict;
use warnings;
use Data::Dumper;
$Data::Dumper::Deparse = 1;
$Data::Dumper::Purity = 1;
Run Code Online (Sandbox Code Playgroud)
有没有办法指定"在当前.pl文件中,我希望自动假设这些语句."
我会的
package foo;
use strict;
use warnings;
use Data::Dumper;
$Data::Dumper::Deparse = 1;
$Data::Dumper::Purity = 1;
my @localState = (1, 2, 3, 4, 5);
sub test {
print Dumper \@localState;
}
package main;
use strict;
use warnings;
use Data::Dumper;
$Data::Dumper::Deparse = 1;
$Data::Dumper::Purity = 1;
foo->test;
Run Code Online (Sandbox Code Playgroud)
这可以很快得到太多的样板重复和损害可维护性.
遗憾的是,我无法在其中使用带有"eval"的函数来调用所有这些样板文件,因为该样板文件将被放入函数中,而不是全局范围; Perl没有我知道的Lisp宏实际上有非函数绑定的eval-like行为(我可能是错的,如果Perl有lisp宏会很酷).
有没有人知道如果没有编写解析器来为我插入语句,如果它是在文件中声明的第一个包,是否可以实现此行为?