ElMagnifico has asked for the wisdom of the Perl Monks concerning the following question:

Bretheren, I seek your guidance. I have read the scriptures but have not found enlightenment. No doubt the answer is there but I understand not the wisdom. I beg thine assistance. (Ok...I'll cut that out. :p)

I have a flat file (with some 185k lines)with values like the following:
"CHEVY","US","UNITED STATES" "MERCEDES","DE","GERMANY" "PEUGOT","FR","FRANCE" "FORD","US","UNITED STATES" "LADA","RU","RUSSIAN FEDERATION" "SATURN",US","UNITED STATES" "ROLLSROYCE","UK","UNITED KINGDOM "BMW","DE","GERMANY" <c> </p> As the file is read via a while() loop I'm putting the country code (i +.e. US, DE, etc.) into a hash.</p> <c> while(<DB>) { @db = split/,/; push(@countries,$db["1]); }

I need to do the following:

  1. If the country code is not in the hash, add it with a value of 1;
  2. If the country code is in the hash, increment the value by 1;
  3. When all the entries are in the hash sort it so that it prints out from highest to lowest.

My questions:

1) Is a hash the proper structure for what I'm trying to do?

2) If so, how do I get it to do what I'd like?

Thank you in advance for your help. My experience is at the beginner level and I sincerely appreciate your help.


ElMagnifico - I work at it so that maybe one day it'll be true! :-D

20080205 Janitored by Corion: Added formatting, code tags, as per Writeup Formatting Tips