This is what I have
my %count_words;
while (<DATA>){
my $line= $_;
chomp $line;
my @words = split (/ /, "$line");
foreach my $word(@words){
$count_words{"$word"}++;
}
}
foreach my $key (%count_words){
print "\"$key\" occurs \"$count_words{$key}\" times\n";
}
__DATA__
we name is something
this is what it does
we food food food food
and this is the output i get
"it" occurs "1" times
"1" occurs "" times
"what" occurs "1" times
"1" occurs "" times
"name" occurs "1" times
"1" occurs "" times
"food" occurs "1" times
"1" occurs "" times
"does" occurs "1" times
"1" occurs "" times
"is" occurs "2" times
"2" occurs "" times
"we" occurs "2" times
"2" occurs "" times
"food" occurs "3" times
"3" occurs "" times
"something" occurs "1" times
"1" occurs "" times
"this" occurs "1" times
"1" occurs "" times
my question is why are there these additional keys created which are essentially the values of the previously created key->value pair.
this is what i would expect
"it" occurs "1" times
"what" occurs "1" times
"name" occurs "1" times
"food" occurs "1" times
"does" occurs "1" times
"is" occurs "2" times
"we" occurs "2" times
"food" occurs "3" times
"something" occurs "1" times
"this" occurs "1" times
Can someone please correct my obvious mistake?
your error is in your foreach loop, you need the keys
function:
foreach my $key ( keys %count_words){
print "\"$key\" occurs \"$count_words{$key}\" times\n";
}
otherwise, your foreach
is iterating through all keys AND values.