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"; |
depesz
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
Fakt.
ostatecznie: