did this (for fun) a long time ago when was working with a telco. it was a unix/linux one liner in shell...without reproducing it: map each digit to a regex for that position that is the set of corresponding letters, e.g. abc if digit is 2 or whatever. then grep the entire regex against /etc/words (on linux and most unixes)
example 96753 can become the word WORLD
grep "^[wxyz][mno][pqrs][jkl][def]$" /etc/words
obviously you could do the same thing in perl.
the hardest line to type correctly is: stty erase ^H