Do you have data in sequencial order ?
ie.. wic1 => Wickliffe and wic2 => Wickville?
If that's the case, it is very easy for you. From cityfile you can generate 'wic1' type entries, put it in the hash, read device file line-by-line and make outfile.
If that's not the case, then you can apply String::Approx to do matching.