Open In App

Perl | Count the frequency of words in text

Last Updated : 12 Feb, 2019
Comments
Improve
Suggest changes
Like Article
Like
Report
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
    # 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
     
    # 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
     
    #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.

Next Article
Article Tags :

Similar Reads