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]

Komentarze

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

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

iWorks Marcin Pietrzak

Wykorzystujemy ciasteczka do spersonalizowania treści i reklam, aby oferować funkcje społecznościowe i analizować ruch w naszej witrynie.

Informacje o tym, jak korzystasz z naszej witryny, udostępniamy partnerom społecznościowym, reklamowym i analitycznym. Partnerzy mogą połączyć te informacje z innymi danymi otrzymanymi od Ciebie lub uzyskanymi podczas korzystania z ich usług.

Informacja o tym, w jaki sposób Google przetwarza dane, znajdują się tutaj.