Kategorie
Bez kategorii

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

pobierz plik: konwersja-napisu-w-numer.pl

2 odpowiedzi na “konwersja napisu na numer telefonu”

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

Możliwość komentowania jest wyłączona.