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 : Sélectionner tout - Visualiser dans une fenêtre à part
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