[PERL] [REGEX] Consommation intempestive dans une chaine
Bonjour,
J'ai un petit souci avec un vieux script UNiX dont une partie PERL
Manifestement le problème est dans la partie PERL
Dans le code, le bug est assez clairement identifié mais je ne parviens pas à le corriger
Voici le script en question
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#!/bin/ksh
PERL=/usr/bin/perl
# BUG A CORRIGER
#SI CODE PAYS = DEUX LETTRES IDENTIQUES UN SEUL CHIFFRE EN SORTIE
#EXEMPLE
#codePAYS="AA"
#ALORS
#Constaté codePaysEnChiffres = 10
#Attendu codePaysEnChiffres = 1010
codePAYS="AA"
echo codePAYS = $codePAYS
# On remplace chaque lettre du Code Pays par son équivalent en chiffre
# Indispensable pour calculer le modulo 97
codePaysEnChiffres=`echo $codePAYS | $PERL -e 'BEGIN{$codePaysEnChiffres=undef; }
END{ print $codePaysEnChiffres; } \
while (<>) { \
if (/A/) {$codePaysEnChiffres=$codePaysEnChiffres."10";} \
if (/B/) {$codePaysEnChiffres=$codePaysEnChiffres."11";} \
if (/C/) {$codePaysEnChiffres=$codePaysEnChiffres."12";} \
if (/D/) {$codePaysEnChiffres=$codePaysEnChiffres."13";} \
if (/E/) {$codePaysEnChiffres=$codePaysEnChiffres."14";} \
if (/F/) {$codePaysEnChiffres=$codePaysEnChiffres."15";} \
if (/G/) {$codePaysEnChiffres=$codePaysEnChiffres."16";} \
if (/H/) {$codePaysEnChiffres=$codePaysEnChiffres."17";} \
if (/I/) {$codePaysEnChiffres=$codePaysEnChiffres."18";} \
if (/J/) {$codePaysEnChiffres=$codePaysEnChiffres."19";} \
if (/K/) {$codePaysEnChiffres=$codePaysEnChiffres."20";} \
if (/L/) {$codePaysEnChiffres=$codePaysEnChiffres."21";} \
if (/M/) {$codePaysEnChiffres=$codePaysEnChiffres."22";} \
if (/N/) {$codePaysEnChiffres=$codePaysEnChiffres."23";} \
if (/O/) {$codePaysEnChiffres=$codePaysEnChiffres."24";} \
if (/P/) {$codePaysEnChiffres=$codePaysEnChiffres."25";} \
if (/Q/) {$codePaysEnChiffres=$codePaysEnChiffres."26";} \
if (/R/) {$codePaysEnChiffres=$codePaysEnChiffres."27";} \
if (/S/) {$codePaysEnChiffres=$codePaysEnChiffres."28";} \
if (/T/) {$codePaysEnChiffres=$codePaysEnChiffres."29";} \
if (/U/) {$codePaysEnChiffres=$codePaysEnChiffres."30";} \
if (/V/) {$codePaysEnChiffres=$codePaysEnChiffres."31";} \
if (/W/) {$codePaysEnChiffres=$codePaysEnChiffres."32";} \
if (/X/) {$codePaysEnChiffres=$codePaysEnChiffres."33";} \
if (/Y/) {$codePaysEnChiffres=$codePaysEnChiffres."34";} \
if (/Z/) {$codePaysEnChiffres=$codePaysEnChiffres."35";} \
}'`
echo "codePaysEnChiffres = "$codePaysEnChiffres |
Bien sûr, cela doit marcher aussi quelque soit la longueur
AACAA = 1010131010
ADAB = 10141011
Et il y a un autre problème, non identifié apparemment : le CodePaysEnChiffre est trié alors qu'il ne faut pas
#EXEMPLE
#codePAYS="GB"
#ALORS
#Constaté codePaysEnChiffres = 1116
#Attendu codePaysEnChiffres = 1611
Quelqu'un saurait-il me dire ce qu'il en est ? Le script marche mal du coup et c'est dommage.
Cdt