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
Bien sûr, cela doit marcher aussi quelque soit la longueur
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
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
Partager