2015-02-03 2 views
-1

주어진 줄 수보다 적은 파일을 제거하는 Perl 스크립트를 작성하고 있습니다. 내가 지금까지 가지고있는 것은Perl에서 n 줄 미만의 파일 제거

my $cmd = join('','wc -l ', $file); #prints number of lines to command line 
if (system($cmd) < 4) 
{ 
    my $rmcmd = join('','rm ',$file); 
    system($rmcmd); 
} 

여기서 은 파일의 이름과 위치입니다.

+4

질문이 있으십니까? – genisage

+1

파일을 지우려면'system'을 부를 필요가 없습니다. Perl 자체에서'unlink' 함수를 사용하십시오. 또한,'join ('', 'wc -l', $ file) 대신''wc -l $ file "'이라고 말할 수 있습니다. –

답변

3

system을 사용할 필요가 없습니다. 펄은 계산 라인의 완벽하게 할 수있다 : 나는 당신의 최종 목표를 있으리라 믿고있어

sub count_lines { 
    open my $fh, '<', shift;   
    while(local $_ = <$fh>) {} # loop through all lines 
    return $.; 
} 

unlink $file if count_lines($file) < 4; 

미만 N를 셀 라인 파일을 제거 디렉토리 트리를 검색하는 것입니다. File::Find과 멋진 코드 생성기 find2perl을 확인하여 해당 부분을 처리하십시오.

+1

또 다른 방법은 다음과 같습니다 :'my $ count =() = ; – Zaid

+0

@Zaid : 불필요하게 전체 파일을 메모리로 읽어 들일 것입니다. – Borodin