Here's a bit of critique...
for $i (@phrase) {
$wordfreq{"$phrase[ $j ]"}++;
# print "$wordfreq{\"$phrase[ $j ]\"} appears $wordfreq{\"$phrase[
+$j ]\"}\n";
$j++;
}
First, in each run of the loop over
@phrase,
$i holds the particular element, so you can be saying
$wordfreq{$i}++ instead of
$wordfreq{$phrase[$j]}. Second, you're using quotes around
$phrase[$j] that are totally unnecessary. Third, your (commented out) print statement probably should have looked like:
print "$i appears $wordfreq{$i} times\n";.
As for your "trouble formatting the report", maybe you should print some newlines or something.
for my $word (keys %wordfreq) {
print "$word appears $wordfreq{$word} times\n";
}