On Wed, Apr 17, 2013 at 1:17 PM, Irfan Sayed <[email protected]>wrote:
> please suggest
You need to work on indenting! Name a hash and an array the same is going
to lead to troubles down the road. The standard idiom for going through a
hash is to just get the key and the ref the value via the hash:
foreach my $key ( keys %names ) {
print "$key => $names{$key}\n";
as long as you're looping, instead of debug printing just "hi"
print "new key $a\n"
...
print "found key $key"
don't use $a and $b as they are special vars for use in the sort function's
anonymous subs. Your loop could actually just be:
$names{$_}++ foreach @words;
Your data is there, but your final for loop is wrong
foreach ( ($key2, $value2) = each %names ) {
"each" returns a list of pairs and as you have an list context:
($key2, $value2)
on the LHS of the "=", they get assigned the first two elements of the list
"each' produces:
c, 1, b,1, 1,2
(note the order is arbitrary and can't be counted on) and the rest gets
thrown away. So you only see one loop of printing - you wanted a while
loop:
while ( ($key2, $value2) = each %names ) {
and the better idiom is;
foreach my $key ( keys %names ) {
print "got: $key => $names{$key}\n"
}
got: c => 1
got: a => 2
got: b => 1
--
a
Andy Bach,
[email protected]
608 658-1890 cell
608 261-5738 wk