删除Perl中少于n行的文件

时间:2015-02-03 22:36:50

标签: perl unix

我正在编写一个Perl脚本来删除少于给定行数的文件。到目前为止我所拥有的是

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

其中$file是文件的名称和位置。

1 个答案:

答案 0 :(得分:3)

没有必要使用system。 Perl完全能够计算行数:

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以便为您处理该部分。