我已经开始使用ack
,因为它似乎是在Perl脚本中轻松实现unix rgrep
的好方法。我想,我通过Perl 后引用系统命令使用它:
# Searching for 'use' something
my $pattern = "^use ";
my $path = "./path/to/libs/";
#Only pm files
my $parameters = "--perl";
my @uses = `ack $parameters $pattern $path`;
我知道ack
是纯Perl,但它似乎是为命令行使用而设计的,而不是像API或Perl模块。有没有办法从Perl脚本use
,我的意思是一个模块,可以像Perl函数一样使用ack
:
# My phantasm
use ack;
my @uses = ack($parameters $pattern $path);
......或其他方法 timtowtdi 。
答案 0 :(得分:2)
ack背后的模块是App::Ack,但正如您从文档中看到的那样,它根本不是任何类型的编程接口,并不适合公共消费。你可以和Andy讨论如何让它变得更好,但是你可能最好不要使用命令行或重新发明自己的命令。
答案 1 :(得分:2)
你不能。
也许我应该在模块中加上“没有用户可维修的部件”。它实际上并不意味着以编程方式使用。它实际上只使用模块以便于工作的人员进行维护,并且易于通过CPAN shell进行安装。
文件查找部分非常简单。它只是从File :: Next调用迭代器。
为什么要从另一个Perl程序中调用ack的东西?你的用例是什么?
也许这会更好地用在ack-users mailing list over on Google Groups上。