in reply to count the maximum no.of occurence

You need something like this:

use warnings; use strict; my $str1 = q/It is a guide to action which ensures that the military a +lways obey the commands of the party./; my $str2 = q/It is a guide to action that ensures that the military wi +ll forever heed Party commands is a guide./; my $n = 0; while ( $str1 =~ /(?=(\S+\s+\S+\s+\S+))/g ) { my $t1 = $1; while ( $str2 =~ /($t1)/g ) { print $1; $n++; } } print "No of matching is : $n";

Replies are listed 'Best First'.
Re^2: count the maximum no.of occurence
by sarvan (Sexton) on Jun 30, 2011 at 07:03 UTC
    use warnings; use strict; my $str1 = q/It is a guide to action which ensures that the military a +lways obey the commands of the party./; my $str2 = q/It is a guide to action that ensures that the military wi +ll forever heed Party commands is a guide./; my $n = 0; while ( $str1 =~ /(?=(\S+\s+\S+\s+\S+))/g ) { my $t1 = $1; while ( $str2 =~ /($t1)/g ) { print $1; $n++; } } print "No of matching is : $n";
    but output of the above code comes like this:

    It is at is ais a guideis a guides a guides a guidea guide toguide to actionuide to actionide to actionde to actione to actionensures that thensures that thesures that theures that theres that thees that thes that thethat the militaryhat the militaryat the militaryt the military

    Not the expected output.. What i expected is:
    It is a is a guide is a guide a guide to guide to action ensures that the that the military
    And the maximum reference count of each word i want.. i.e in this case. "is a guide" is matched two times so its count is 2. Any suggestions.

      Sorry, you need to add newlines, like so:

      use warnings; use strict; my $str1 = q/It is a guide to action which ensures that the military a +lways obey the commands of the party./; my $str2 = q/It is a guide to action that ensures that the military wi +ll forever heed Party commands is a guide./; my $n = 0; while ( $str1 =~ /(?=(\S+\s+\S+\s+\S+))/g ) { my $t1 = $1; while ( $str2 =~ /($t1)/g ) { print "$1\n"; $n++; } } print "No of matching is : $n\n";
        Hi jwkrahn, Again the output is something like this..
        It is a t is a is a guide is a guide s a guide s a guide a guide to guide to action uide to action ide to action de to action e to action ensures that the nsures that the sures that the ures that the res that the es that the s that the that the military hat the military at the military t the military