konwersja napisu na numer telefonu

Chciałem poszukać sobie numeru komórki który będzie jakimś fajnym napisem. Nie chciało mi się tego napisu „konwertować” patrząc na klawiaturę telefonu. Nie chciało jak diabli.

#!/usr/bin/perl -w
use strict;
if ( @ARGV ) {
my $number = '';
foreach my $o ( @ARGV ) {
print $o;
my @data = split '', '22233344455566677778889999';
map { my $c = ord lc $_;$number .= $c > 57 ? $data[ $c - 97 ]:$_ } split '', lc $ARGV[0];
$number .= ' ';
}
print ': ' . $number;
}
else {
print 'usage: convert.pl string';
}
print "\n";

Pobierz źródło: konwersja-napisu-w-numer.pl.gz

Liczba komentarzy: 2

depesz - Gravatar

29 lipca 2008 o godzinie 17:23 depesz skomentował:

hmm .. jak masz foreacha, to czemu $ARGV[0] ?

poniższa wersja potrafi wypisać numery dla kilku słów:

#!/usr/bin/perl -w
use strict;

die ‘usage: convert.pl string’ unless @ARGV;

my @digit_for_letter = split ”, ’22233344455566677778889999′;

for my $word ( @ARGV ) {
my $number = '';
for my $char ( split //, lc $word ) {
my $ascii = ord $char;
if ($ascii >= 97 && $ascii <= 122) {
$number .= $digit_for_letter[ $ascii - 97 ];
} else {
$number .= $char;
}
}
printf "%s : %s\n", $word, $number;
}

Marcin - Gravatar

30 lipca 2008 o godzinie 7:43 Marcin skomentował:

Fakt.

ostatecznie:

use strict;

die 'usage: convert.pl string' unless @ARGV;
my @data = split '', '22233344455566677778889999';
foreach my $o ( @ARGV ) {
    print $o . ': ';
    map { my $c = ord lc $_;print $c > 57 ? $data[ $c - 97 ]:$_ } split '', lc $o;
    print "\n";
}

Dodaj komentarz

Należy wpełnić pola oznaczone znakiem gwiazdki "*". Proszę zapoznać się z zasadami komentowania.