You don't learn a programming language, you just experience it. As time passes and you write more and more code in the language you will get better, but there is never a way to know it all. You will always face troubles with bugs and what not, you will spend hours googling answers, you will spend hours looking over your code; all the while learning more and more as time passes.
On the other hand, based on the length/care it appears you put into your post, you'll need to exercise much more patience than you already have to get the job done.