1

我开始使用ack它是因为它似乎是一种rgrep在 Perl 脚本中轻松实现 unix 的好方法。想了想,我通过 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 模块。有没有办法use从 Perl 脚本中获得它,我的意思是一个可以ack像 Perl 函数一样使用的模块:

# My phantasm
use ack;

my @uses = ack($parameters $pattern $path);

...或另一种方法timtowtdi

4

2 回答 2

2

你不能。

也许我应该在模块中放入“内部没有用户可维修的部件”。它真的不适合以编程方式使用。它实际上只使用模块以方便使用它的人员进行维护,并便于通过 CPAN shell 进行安装。

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

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

也许这会更好地放在ack-users 邮件列表上而不是 Google Groups 上

于 2013-07-22T00:25:25.713 回答
2

ack 背后的模块是App::Ack,但正如您从文档中看到的那样,它根本不是任何类型的编程接口,也不适合公众使用。您可以与 Andy 讨论如何让它变得更好,但除此之外,您最好还是使用命令行或重新发明自己的命令行。

于 2013-07-21T18:49:06.133 回答