# # Find all the words for a given phone number. # # This is clean Perl programming. I doubt this program # can be expressed in less lines. # # $Id: phone.pl,v 1.2 2002/06/24 20:17:24 renaud Exp $ # @zero = ( 0 ); @one = ( 1 ); @two = qw( a b c ); @three = qw( d e f ); @four = qw( g h i ); @five = qw( j k l ); @six = qw( m n o ); @seven = qw( p q r s ); @eight = qw( t u v ); @nine = qw( w x y z ); @name = qw( zero one two three four five six seven eight nine ); die "Usage: $0 number\n" unless (@ARGV); $number = shift @ARGV; f($number, ''); sub f { my($digits, $letters) = @_; unless ($digits =~ s/^(.)//) # remove first digit { print "$letters\n"; } else { foreach (@{ $name[$1] }) # map digit to letters { f($digits, $letters . $_) } } }