in reply to What language should I learn?
If you are looking to create better web or database apps, then the obvious suggestion is to learn SQL and know how to use it properly.
I dare say you already know some simplified SQL from what you have done already, or perhaps you have used a translator such as SQL::Abstract (Used by DBIx::Class), but I think it is worth while to learn SQL properly so that you can gain a deeper understanding of what is going on, what it is possible to do with a database, and where the limitations lie. That way you will be able to code efficient database applications that don't have poor performance due to a bad query or database function.
For desktop applications you have dozens of languages to choose from. Contrary to what others have said, I think Java is a good choice because it is cross platform. It is also the most popular language out there in the job vacancies, so if you are competent in Java you should not find yourself unemployed. Java is also the language of Hadoop which is making a big noise out there at the moment.
If you just want to learn to improve yourself, then I think learning a functional language such as Haskel or Erlang would be good, because it is always good to learn a different paradigm, as it lets you see all your programming in a different light, and can improve your choice of algorithm and design.