#!/usr/bin/perl package Text::T9; use Exporter; our @ISA = qw( Exporter ); our @EXPORT = qw( t9_find_words ); our $VERSION = '1.0'; use strict; use warnings; use Carp; our @T9NL = ( '', '', 'ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ' ); sub t9_find_words($$) { my $num = shift; my $words = shift; return () unless $num =~ /^[2-9]+$/; my $len = length( $num ); my $re; for( 0 .. $len - 1 ) { $re .= "[" . $T9NL[substr( $num, $_, 1 )] . "]"; } $re = "^$re\$"; return grep { /$re/i } grep { length( $_ ) == $len } @$words; } =pod =head1 NAME Text::T9 - Text in 9 keys (T9) input. =head1 SYNOPSIS # array with words my @words = qw( this is just a simple kiss test lips here how ); # what is word(s) for the sequence print "$_ " for( t9_find_words( 5477, \@words ) ); # this prints: kiss lips =head1 DESCRIPTION What is T9 Text Input? T9 Text Input is software that enables users to easily enter text into small devices with limited size keyboards, like mobile phones. T9 Text Input replaces the traditional "multi-tap" method of entering text providing the ability to enter text using only one keystroke per letter. (you can find more inforation at http://www.t9.com/) This module provides simple way to find which words match a number sequence in T9 sense. Examples: 5477 : KISS, LIPS 8447 : THIS 746753 : SIMPLE 469 : HOW Allowed number are 2,3,4,5,6,7,8,9 which are mapped in this way: 2 ABC 3 DEF 4 GHI 5 JKL 6 MNO 7 PQRS 8 TUV 9 WXYZ =over 4 =item t9_find_words( $num, \@words_arr ) This functions takes two arguments: number sequence and words array reference. The return value is a list of matching words. =back =head1 EXAMPLES open( i, "/tmp/words.lst" ); @words = ; close( i ); chomp( @words ); print "$#words were loaded\n"; for my $num ( qw( 5477 8447 746753 469 ) ) { print "$num: "; print "$_ " for( t9_find_words( $num, \@words ) ); print "\n"; } =head1 AUTHOR Vladi Belperchinov-Shabanski "Cade" http://www.biscom.net/~cade =cut