#! /usr/bin/perl
use strict;
use warnings;
my $str1='It is a guide to action which ensures that the military alw
+ays obey the commands of the party.'; chomp($str1);
my $str2='It is a guide to action that ensures that the military will
+forever heed Party commands is a guide.'; chomp($str2);
my @arr1=split(/\s+/, $str1);
my $n_occur_in_str1=0;
my $n_occur_in_str2=0;
print "-"x60,"\n";
print "nth Match\tNo of occurence\t\tMatched Pattern\n";
print "-"x60,"\n";
for(my $i=0; $i<$#arr1;$i++) {
my $t1="$arr1[$i] $arr1[$i+1] $arr1[$i+2]";
my @pattern_word_count=split(/\s/, $t1);
my $space_count=@pattern_word_count;
if($space_count == 3) {
if($str2=~/$t1/) {
my $occurence=`echo $str2 | grep -o '$t1' |wc -
+l`; chomp($occurence);
print $i+1,"\t\t",$occurence,"\t\t\t$t1\n";
$n_occur_in_str2+=$occurence;
$n_occur_in_str1++;
}
}
}
print "\n\nTotal no of occurence in str1 : $n_occur_in_str1\n";
print "\n\nTotal no of occurence in str2 : $n_occur_in_str2\n";
in the above code i used an array to store the splitted words from sentence and then use each words for further processing
Here, the problem is when i have repeated words, unwantedly i do computation for same words. so to avoid tat i have been advised to store the words in a hash rather than an array.
But, i m not clear how i can do that |