If you're having problems fitting the forcast into a single text message, have a look at
Lingua::EN::Squeeze. This compresses text (e.g. 'you' will automatically become 'u'), and you can also add your own words and abbreviations (as you have done with the %swaps hash).
JJ