Also, you dont need the second loop - You can make use of the fact that you are using a hash.
use strict ;
use warnings ;
my @data = <DATA> ;
my %freq_hash ; # What you call '%hash'
foreach my $single_line ( @data ) {
chomp( $single_line ) ;
my ( $word, $freq ) = split( / /, $single_line ) ;
$freq_hash{ $word } = $freq ;
}
## So far all we have done is get data ##
print "\nData Before Process:\n";
foreach my $word (sort { $freq_hash{ $b } <=> $freq_hash{ $a } } keys
+%freq_hash ) {
print "$word\t\t$freq_hash{$word}\n";
}
foreach my $word ( keys %freq_hash ) {
if( ( lc( $word ) ne $word ) and $freq_hash{ lc( $word ) } ) {
$freq_hash{ lc( $word ) } += $freq_hash{ $word } ;
delete( $freq_hash{ $word } ) ;
}
}
print "\nData After Process:\n";
foreach my $word (sort { $freq_hash{ $b } <=> $freq_hash{ $a } } keys
+%freq_hash ) {
print "$word\t\t$freq_hash{$word}\n";
}
__DATA__
the 1
The 1
hello 15
hell 19
Hell 8
Update:
Included code.