1 800 MEATHOMEjust type
./script.pl MEATHOMEand it gives you the right number !
./script.pl -d=456123
./script.pl -s=hello_dolly
#!/usr/bin/perl -l use strict; my @telear = ( ["+"], [" "], [ "A", "B", "C" ], [ "D", "E", "F" ], [ "G", "H", "I" ], [ "J", "K", "L" ], [ "M", "N", "O" ], [ "P", "Q", "R", "S" ], [ "T", "U", "V" ], [ "W", "X", "Y", "Z" ] ); my %telealph = ( ( map { $_ => $_ } ( 0 .. 9 ) ), ( map { my $d = $_; map { $_ => $d } @{ $telear[$d] } } ( 0 .. $#telear ) ) ); # big improvement by simonm my @tab = (); sub telecode { my $tocode = uc($_[0]); my $telecode = ""; foreach my $byte ( split //, $tocode ) { $telecode .= $telealph{$byte}; } return $telecode; } sub teledecode { my $tocode = $_[0]; my @telecode = (); my $i = 0; foreach my $byte ( split //, $tocode ) { $telecode[$i] = $telear[$byte]; $i++; } @tab = (); return arrangecode( "", 0, @telecode ); } sub arrangecode { my ( $first, $i, @dat ) = @_; foreach my $j ( @{ $dat[$i] } ) { if ( $i < ( @dat - 1 ) ) { @tab = arrangecode( $first . $j, $i + 1, @dat ); } else { $tab[@tab] = $first . $j; } } return @tab; } sub smstype { my $first = uc($_[0]); # uc() improvement by b10m $first =~ s/_/ /g; my $sms = ""; foreach my $j ( split //, $first ) { my $tou = $telealph{$j}; my $k = scalar( @{ $telear[$tou] } ); for my $i ( 0 .. $k ) { $sms = $sms . "$tou"; if ( $j eq $telear[$tou][$i] ) { $sms = $sms . ", "; last; } } } return $sms; } foreach my $toto (@ARGV) { if ( $toto =~ /-d=(\d+)/ ) { foreach my $tata ( teledecode($1) ) { print $tata} } elsif ( $toto =~ /-s=([a-zA-Z_]+)/ ) { print smstype($1); # typo fixed by b10m (thanks) } else { print telecode($toto); } }
In reply to play with phone numbers & w perl :) by dominix
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |