# Perl | Count the frequency of words in text

• Last Updated : 12 Feb, 2019

Counting frequency of all words of a string is a basic operation for any programming language. The frequency of each word of the text can be counted and stored in a hash for further use. In Perl, we can do this by firstly splitting the words of the string into an array. We use the function split / / which splits the string with ‘ ‘. However the blank spaces can be more than one in between two words, therefore /\s+/ is used. Here \s+ denotes one or more occurrence of ‘ ‘. Now we traverse the new array created by splitting of text into words. This time we increment the count of the word while traversing the array.

• Example: To demonstrate Count the frequency of words in string

 `# Perl program for counting words in a string`` ` `\$actual_text` `= ``"GFG GeeksforGeeks GFG"` `;`` ` `# Creating words array by splitting the string``@words``= ``split` `/ /, ``\$actual_text``;``  ` `# Traversing the words array and ``# increasing count of each word by 1``foreach` `\$word``(``@words``) ``{``    ``\$count``{``\$word``}++;``}`` ` `# Printing the word and its actual count``foreach` `\$word` `(``sort` `keys` `%count``) ``{``    ``print` `\$word``, ``" "``, ``\$count``{``\$word``}, ``"\n"``;``}`

Output:

```GFG 2
GeeksforGeeks 1
```

Difference between /\s+/ and / /: The ‘\s+’ can be used for a delimiter with one or many space. However / / just separates words with 1 space. The following code represents the difference if the text has more than one space between two words.

• Example: To demonstrate the difference between /\s+/ and / /

 `  ` `# Perl program for counting words in a string using / / `` ` `# A text with two spaces rather than one``\$actual_text` `= ``"GeeksforGeeks  welcomes you to GeeksforGeeks portal"` `;`` ` `# splitting the word with / /``@words``= ``split` `/ /, ``\$actual_text``;`` ` `# Counting the occurrence of each word  ``foreach` `\$word` `(``@words``)``{``    ``\$count``{``\$word``}++;``}`` ` `foreach` `\$word` `(``sort` `keys` `%count``)``{``    ``print` `\$word``, ``" "``, ``\$count``{``\$word``}, ``"\n"``;``}`

Output:

```1
GeeksforGeeks 2
portal 1
to 1
welcomes 1
you 1
```

Note: The extra ‘ ‘ is also counted as a word.

Using the command /\s+/ to split the words: Here space will not count as the separate word.

• Example:

 `  ` `#Perl program for counting words in a string using /\s+/`` ` `# Actual string with two spaces``\$actual_text` `= ``"GeeksforGeeks  welcomes you to GeeksforGeeks portal"` `;`` ` `#S plitting the text using /\s+/ command``@words` `= ``split` `/\s+/, ``\$actual_text``;``  ` `# counting the occurrence of each word  ``foreach` `\$word` `(``@words``) ``{``    ``\$count``{``\$word``}++;``}`` ` `foreach` `\$word` `(``sort` `keys` `%count``)``{``    ``print` `\$word``, ``" "``, ``\$count``{``\$word``}, ``"\n"``;``}`

Output:

```GeeksforGeeks 2
portal 1
to 1
welcomes 1
you 1
```

Note: The extra ‘ ‘ is not counted as a word.

My Personal Notes arrow_drop_up