My biggest stuggle of my musical education is ear training. And I'll tell you how I train.
Perfect pitch is a skill that you can gain after you have at least learned the basics of relative pitch. Because relative pitch makes you hear the tones better.
1.
http://www.trainear.com/ This is my favorite interval trainer. You can start with 2 diffrent using song buttons and gradually increase the more intervals. It's very good to sing along. When mastered choose interval instead of song buttons so you can learn the real names. The intervals are probably the most important tool in ear training.
2. Play 2 tones simutainiously and sing them, it's very difficult to hear the bass tone so you should train this often. First play major/minor 2nd when mastered do 3rd and 4th... when 2 tones have been matered play 3 and the trick is to hear the middle tone.
3. Pick a tone and sing any interval up or down from that starting from 2nd and increase, the task is to hear the tone in your mind before singing it.
4. Sing all scales, major or minor and modal. And pick a random scale tone and sing it, you should know how it sound be the resonance in the scale. For example b in C major seeks the tone C so you can clearly hear the tone b.
5. Sight sing, buy a sight sing book and sing the note names. Conduct with the right hand to make it harder or drum the beat. Sight singing is for me the hardest I do, the only way for someone with bad ear like me to sight sing fluently is the master the drills mention before. Singing solfages is optional but when singing atonal lines like in Modus Novus which i recommend then solfage names are out of the picture.
6. Master rythm! Buy Rythm training by Starer, very good book. And always conduct with the hand while performing, metronome is good helper.
7. Master note names! I have this book Solfeges be Dandeloit or something like that and the task is to think of any key in the mind and say the note names at fast speed, up to 144 notes per minute.
Ear training takes years, but daily exercises can make that time alot shorter.
and if anyone knows of more exercises I'd be glad to learn.