在Perl脚本中使用Ack的正确方法?

时间:2013-07-21 14:37:55

标签: perl ack

我已经开始使用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

2 个答案:

答案 0 :(得分:2)

ack背后的模块是App::Ack,但正如您从文档中看到的那样,它根本不是任何类型的编程接口,并不适合公共消费。你可以和Andy讨论如何让它变得更好,但是你可能最好不要使用命令行或重新发明自己的命令。

答案 1 :(得分:2)

你不能。

也许我应该在模块中加上“没有用户可维修的部件”。它实际上并不意味着以编程方式使用。它实际上只使用模块以便于工作的人员进行维护,并且易于通过CPAN shell进行安装。

文件查找部分非常简单。它只是从File :: Next调用迭代器。

为什么要从另一个Perl程序中调用ack的东西?你的用例是什么?

也许这会更好地用在ack-users mailing list over on Google Groups上。