如何计算perl中一行中的单词数?

时间:2011-05-08 18:06:05

标签: perl

我知道我可以编写自己的while循环以及regex来计算一行中的单词。但是,我正在处理1000行,我不想每次都运行这个循环。所以,我想知道有没有办法计算perl中行中的单词。

2 个答案:

答案 0 :(得分:4)

对于现代计算机来说,1000次并不是一个重要的数字。通常,编写对您有意义的代码,然后,如果存在性能问题,请担心优化。

要计算单词,首先需要确定单词是什么。一种方法是匹配连续单词字符组,但将“它”作为两个单词。 另一种方法是匹配连续非空格的组,但将“短语 - 短语”视为三个单词。一旦你有一个匹配单词的正则表达式,你可以计算这样的单词(在这个例子中使用连续的单词字符):

scalar( () = $line =~ /\w+/g )

答案 1 :(得分:2)

如何在一个或多个非单词字符上拆分行并计算结果数组的大小?

$ echo "one, two, three" | perl -nE "say scalar split /\W+/"
3

作为一个潜艇:

# say count_words 'foo bar' => 2
sub count_words { scalar split /\W+/, shift }

要摆脱ysth发现的主要空间问题,您可以过滤掉空片段:

$ echo " one, two, three" | perl -nE 'say scalar grep {length $_} split /\W+/'
3

...或剃掉输入字符串:

$ echo " one, two, three" | perl -nE 's/^\W+//; say scalar split /\W+/'
3