Bonjour,
J'ai un petit problème pour mettre en forme et récupérer correctement des données d'un tableau.
Objectif: Lancer un audit entre les données du SI patrimoine et le SI technique (Serveur). Je dois donc découper et mettre dans des variables des données issues d'un tableau afin de pouvoir les comparer.
[CODE] #!/usr/local/bin/perl
#Déclaration et remplissage du tableau contenant les circuits issus des serveurs
@ConstitCircuitGestio =
("CRS000001;PDH;123;CDTCD111013;MAIN"
,"CRS000001;PDH;123;CDTCD111017;SPARE"
,"CRS000001;PDH;123;CDTCD111018;SPARE"
,"CRS000002;PDH;133;CDTCD111020;MAIN"
,"CRS000002;PDH;133;CDTCD111021;MAIN"
,"CRS000002;PDH;133;CDTCD111022;MAIN");
#Déclaration et remplissage du tableau contenant les circuits issus du SI patrimoine
@ConstitCircuitRosam =
("CRS000001;PDH;123;CDTCD111013-.,1;CDTCD111017-.,1/CDTCD111077-.,2/CDTCD111001-.,3/CDTCD111005-.,4/CDTCD111009-.,5"
,"CRS000002;PDH;133;CDTLP111056-.,1/CDTLP111052-.,2/CDTLP111048-.,3/CDTLP111044-.,4;"
,"CRS000005;PDH;133;CDTCD111053-.,1/CDTCD111057-.,2/CDTCD111061-.,3/CDTCD111065-.,4;CDTCD111049-.,1/CDTCD111045-.,2/CDTCD111041-.,3/CDTCD111037-.,4"
,"CRS000007;PDH;133;CDTCD111057-.,1;");
#Découpage des données et insertion dans des variables
foreach $Cir2(@ConstitCircuitRosam)
{
($Circuit, $Type, $KLM, $ConduitMain, $ConduitSpare) = split (/;/, $Cir2);
#Suppression des caractères "-."
$ConduitMain =~s/-.//g;
#Remplacement du caractère "\" par ";".
$ConduitMain =~s/\//;/g;
$ConduitSpare =~s/-.//g;
#Découpage de la variable $ConduitMain pour mettre dans une nouvelle variable les données découpées en fonction du séparateur.
@ConduitMainCircuit = split(/;/,$ConduitMain);
for $i (0..$#ConduitMainCircuit)
{
$NewConduit = $ConduitMainCircuit[$i].".".$i;
print "$Circuit - $Type - $KLM - $NewConduit\n";
}
}
[\CODE]
J'ai donc sur plusieurs lignes le résultat suivant:
CRS000001 - PDH - 123 - CDTCD111013,1.0
CRS000002 - PDH - 133 - CDTLP111056,1.0
CRS000002 - PDH - 133 - CDTLP111052,2.1
CRS000002 - PDH - 133 - CDTLP111048,3.2
CRS000002 - PDH - 133 - CDTLP111044,4.3
CRS000005 - PDH - 133 - CDTCD111053,1.0
CRS000005 - PDH - 133 - CDTCD111057,2.1
CRS000005 - PDH - 133 - CDTCD111061,3.2
CRS000005 - PDH - 133 - CDTCD111065,4.3
CRS000007 - PDH - 133 - CDTCD111057,1.0
Je souhaite avoir sur une seule ligne en fonction du circuit qui ne se représente pas deux fois l'affichage suivant afin de stocker par la suite dans un fichier Excel ou les données seront séparées par des tabulations:
CRS000001 - PDH - 123 - CDTCD111013,1.0
CRS000002 - PDH - 133 - CDTLP111056,1.0 - CDTLP111052,2.1 - CDTLP111048,3.2 - CDTLP111044,4.3
CRS000005 - PDH - 133 - CDTCD111053,1.0 - CDTCD111057,2.1 - CDTCD111061,3.2 - CDTCD111065,4.3
CRS000007 - PDH - 133 - CDTCD111057,1.0
Merci d'avance pour votre réponse.
Patrice
Partager