Oui, tu peux construire un hash, par exemple comme suit:
1 2 3 4 5 6 7
| my %transco = (
A => 1,
J => 1,
B => 2,
K => 2,
# etc.
) |
Ensuite, il suffit de splitter la variable en entrée et d'effectuer les substitutions:
1 2 3 4
| my $var2 = "45A69M";
my @letters = split //, $var2;
my @letters_out = map { $_ = $transco{$_} if defined $transco{$_}; $_} @letters;
my $result = join "", @letters; |
(On peut faire plus concis et se passer des variables intermédiaires, par exemple en faisant pour les lignes 2 et 3:
my @letters_out = map { $_ = $transco{$_} if defined $transco{$_}; $_} split //, $var2;
De même pour le join. Mais peu importe, car on peut faire mieux.)
Il y a en fait bien plus simple, la fonction tr//:
1 2 3
| my $var2 = "45A69M";
$var2 =~tr/AJBKSCLTDMUENV/11222333444555/;
print $var2; # imprime "451694" |
Partager