in reply to first perl example from perl book

This is a problem more easily seen than described. If you use conveninetstore's "read" modification (and changing DAT to DATA), you get this result:
C:\Code>perl averages.pl kim: 50 Average: 50 lee: 75 Average: 75
If you then revert to the original ".=" code, you get this result:
C:\Code>perl averages.pl kim: 90 90 95 100 50 Average: 85 lee: 99 100 75 Average: 91.3333333333333
Clearly, when you do a concatenation, you add data repeatedly to the hash. When you just assign, you get only the last data entry read.

Replies are listed 'Best First'.
Re^2: first perl example from perl book
by convenientstore (Pilgrim) on Jan 15, 2008 at 16:30 UTC
    thank you guys, I see the difference now
    $grades{$student} .= $grade . " "; ./perl.score $grades{lee} is 90 $grades{lee} is 90 100 $grades{kim} is 90 $grades{kim} is 90 90 kim: 90 90 Average: 90 lee: 90 100 Average: 95 $grades{$student} .= " " . $grade ; [root@myserver chaos]# ./perl.score $grades{lee} is 90 $grades{lee} is 90 100 $grades{kim} is 90 $grades{kim} is 90 90 kim: 90 90 Average: 90 lee: 90 100 Average: 95