Perl | Count the frequency of words in text

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 1foreach $word(@words) {    $count{$word}++;}  # Printing the word and its actual countforeach $word (sort keys %count) {    print $word, " ", $count{$word}, "\n";}Output:GFG 2
GeeksforGeeks 1

# 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 1foreach $word(@words) {    $count{$word}++;}  # Printing the word and its actual countforeach $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.
   # 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.
   #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.
Perl-hashes
Perl-String
Perl
Perl
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.