使用wc计算perl中的#行数

时间:2013-06-06 00:51:25

标签: perl split wc

这看起来非常简单但谷歌搜索和stackoverflow搜索都没有改变。人们有不这样做的原因吗?对不起,如果我错过了什么。

我试过

$B = `wc -l $fileB`;
print "$B\n";
@B_array = split /\s+/, $B; #try to split on whitespace
foreach my $item (@B_array) {
        print "$item\n";
}

但由于某种原因,这不会分割wc -l的输出。

非常感谢。

迈克尔

2 个答案:

答案 0 :(得分:6)

您的代码在我的计算机上运行,​​也许这是人们避免使用外部工具的原因之一。你当然可以使用本地Perl来做到这一点:

my $lc = 0;
open my $file, "<", "input" or die($!);
$lc++ while <$file>;
close $file;
print $lc, "\n";

答案 1 :(得分:1)

这可以避免分裂问题,但使用像这样的猫可以被认为是浪费资源。

$B = `cat $fileB | wc -l`;

cat filename | wc -l只生成许多行 - wc无法获取文件名,因为它正在从管道读取到stdin。

此外@array=split ' ', $B也适合您。