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 $o;
        $number .= ' ';
    }
    print ': ' . $number;
}
else {
    print 'usage: convert.pl string';
}
print "\n";
[zip href="/wp-content/uploads/2008/07/konwersja-napisu-w-numer.pl.zip"]konwersja-napisu-w-numer.pl[/zip]

Poprzedni

Pytanie z formularza – padłem

Następne

Dlaczego mysql obsysa?

2 komentarze

  1. 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;
    }

  2. 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";
    }

Oparte na WordPress & Theme by Anders Norén