2013-07-21 2 views
1

ack은 Perl 스크립트에 유닉스 rgrep을 구현하는 좋은 방법 인 것처럼 보이기 때문에 사용하기 시작했습니다. 나는 펄 백 인용 시스템 명령을 통해 그것을 사용하는 생각 : 나는 ack 순수한 펄 알고Perl 스크립트에서 Ack를 사용하는 올바른 방법은 무엇입니까?

# Searching for 'use' something 
my $pattern = "^use "; 
my $path = "./path/to/libs/"; 
#Only pm files 
my $parameters = "--perl"; 

my @uses = `ack $parameters $pattern $path`; 

하지만 명령 줄 사용하도록 설계된 것 같다,하는 API 또는 펄 모듈을 좋아하지 .

# My phantasm 
use ack; 

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

... 또는 다른 방법, timtowtdi : 펄 스크립트에서 use 그것에 방법이 있나요, 나는 펄 기능처럼 ack을 사용할 수 있도록하는 모듈을 의미한다.

답변

2

수 없습니다.

모듈에 "사용자가 수리 할 수있는 부품이 없어야합니다"라고 입력해야 할 수도 있습니다. 실제로 프로그래밍 방식으로 사용되는 것은 아닙니다. 실제로 모듈을 사용하기 때문에 유지 보수가 쉽고 CPAN 쉘을 통해 쉽게 설치할 수 있습니다.

파일 찾기 부분은 매우 간단합니다. 그것은 단지 File :: Next에서 반복자를 호출하는 것입니다.

왜 다른 Perl 프로그램 내부에서 문제를 확인하고 싶습니까? 당신의 유스 케이스는 무엇입니까?

아마도 이것은 ack-users mailing list over on Google Groups에서 더 잘 받아 들여질 것입니다.

+0

유스 케이스는 [Module :: Extract :: Use] (https://metacpan.org/module::Extract::Use)와 유사하지만 재귀 적으로 작성하는 것입니다. File :: Next를보아야합니다. – smonff

+1

네, 대부분 주어진 형식의 파일을 찾으려면 File :: Next부터 시작하십시오. 다른 모든 후버가 테이블에 가져다주지는 않습니다. 특정 유스 케이스에 관해서, 아마도 Module :: Depends :: Tree가 도움이 될까요? http://search.cpan.org/dist/Module-Depends-Tree/ –

2

ack의 모듈은 App::Ack이지만 설명서에서 볼 수 있듯이 실제로 프로그래밍 인터페이스는 아니며 공용으로 사용할 수 없습니다. 앤디에게 더 잘하는 것에 대해 이야기 할 수는 있지만 명령 줄을 사용하거나 자기 자신을 다시 만드는 것이 가장 바람직합니다.

관련 문제