je dois analyser avec Perl un fichier log comportant comme vous allez
le constater un certain nombre de donn=E9es...
je dois "Grouper " ces donn=E9es en fonction des routeurs logiques
(logical-routers), mais le probleme est que ce fichier etant gener=E9
automatiquement
par le serveur, il doit etre trait=E9 tel quel par le programme, et seul
le premier "bloc comportant un routeur logique est declar=E9 par
logical-routers"...
je dois ressortir le nom du routeur (ici m10_0_as1), ensuite son
interface ( ge-0/1/0), ensuite les unit appartenant
a cet interfaces (de 50,51,....61.....=E0 185 par exemple j=B4ai pas tout
mis pr ne pas faire bcp de place),
sous son unit j doit ressortir son Vlan-Id,address, ensuite passer au
suivant,
et des qu=B4une nouvelle interface de ce meme logical-routers est
trouv=E9, refaire la meme operation pour cet interface
a la suite de celui du haut:
ge-1/1/0 {
unit 11 {
vlan-id 11;
family inet {
address 1xx.xx.xxx.6/xx;
}
}
}
}
ge-1/1/0 est la nouvelle interface mais n=B4est pas explicitement
annonc=E9 coe la haut par le mot interfaces
Par la suite il y aura encore un nouvel logical-routers:
ici m10_0_vr1 est le nom du nouveau logical-routers, et en dessous son
interface et les donn=E9es de cet interface coe la haut
Qu=B4il faut traiter comme celui du haut, tout cela c=B4est dans le meme
fichier, entre eux il y a encore un tas d=B4autres infos mais
seules celles ci nous interressent et il faut les recuperer et les
afficher...
je ne sais pas comment proceder, j=B4ai essayer des methodes sans
resultat, je m=B4en remets aux experts du forum pour me faire avancer...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis Dordoigne
Bonjour,
je ne sais pas comment proceder, j´ai essayer des methodes sans resultat, je m´en remets aux experts du forum pour me faire avancer...
Ce n'est pas que je veux pas t'aider, mais si tu as déjà essayé des méthodes qui n'ont pas fonctionné il faudrait un peu les détailler pour qu'on ne cherche pas également dans une mauvaise direction...
Tu as vérifié sur search.cpan.org qu'il n'y avait pas déjà un module qui parsait ce type de fichier ? Lorsque j'y cherche n'importe quel marque de routeur j'ai des dizaines de réponses...
-- Denis
Bonjour,
je ne sais pas comment proceder, j´ai essayer des methodes sans
resultat, je m´en remets aux experts du forum pour me faire avancer...
Ce n'est pas que je veux pas t'aider, mais si tu as déjà essayé des
méthodes qui n'ont pas fonctionné il faudrait un peu les détailler pour
qu'on ne cherche pas également dans une mauvaise direction...
Tu as vérifié sur search.cpan.org qu'il n'y avait pas déjà un module qui
parsait ce type de fichier ? Lorsque j'y cherche n'importe quel marque de
routeur j'ai des dizaines de réponses...
je ne sais pas comment proceder, j´ai essayer des methodes sans resultat, je m´en remets aux experts du forum pour me faire avancer...
Ce n'est pas que je veux pas t'aider, mais si tu as déjà essayé des méthodes qui n'ont pas fonctionné il faudrait un peu les détailler pour qu'on ne cherche pas également dans une mauvaise direction...
Tu as vérifié sur search.cpan.org qu'il n'y avait pas déjà un module qui parsait ce type de fichier ? Lorsque j'y cherche n'importe quel marque de routeur j'ai des dizaines de réponses...
-- Denis
lepetitjoe
En fait j´essaie de construire une truc avec les Piles (Push et Pop ) mais je suis loin d´arriver a un resultat escompté. On m´´a conseillé de regarder ds cette direction la. Je ne comprends pas bien la fin de votre message la ou vous dites avoir des dizaines de reponses....
Denis Dordoigne wrote:
Bonjour,
je ne sais pas comment proceder, j´ai essayer des methodes sans resultat, je m´en remets aux experts du forum pour me faire avancer...
Ce n'est pas que je veux pas t'aider, mais si tu as déjà essayé des méthodes qui n'ont pas fonctionné il faudrait un peu les détailler pour qu'on ne cherche pas également dans une mauvaise direction...
Tu as vérifié sur search.cpan.org qu'il n'y avait pas déjà un mod ule qui parsait ce type de fichier ? Lorsque j'y cherche n'importe quel marque de routeur j'ai des dizaines de réponses...
-- Denis
En fait j´essaie de construire une truc avec les Piles (Push et Pop )
mais je suis loin d´arriver a un resultat escompté. On m´´a
conseillé de regarder ds cette direction la.
Je ne comprends pas bien la fin de votre message la ou vous dites avoir
des dizaines de reponses....
Denis Dordoigne wrote:
Bonjour,
je ne sais pas comment proceder, j´ai essayer des methodes sans
resultat, je m´en remets aux experts du forum pour me faire avancer...
Ce n'est pas que je veux pas t'aider, mais si tu as déjà essayé des
méthodes qui n'ont pas fonctionné il faudrait un peu les détailler pour
qu'on ne cherche pas également dans une mauvaise direction...
Tu as vérifié sur search.cpan.org qu'il n'y avait pas déjà un mod ule qui
parsait ce type de fichier ? Lorsque j'y cherche n'importe quel marque de
routeur j'ai des dizaines de réponses...
En fait j´essaie de construire une truc avec les Piles (Push et Pop ) mais je suis loin d´arriver a un resultat escompté. On m´´a conseillé de regarder ds cette direction la. Je ne comprends pas bien la fin de votre message la ou vous dites avoir des dizaines de reponses....
Denis Dordoigne wrote:
Bonjour,
je ne sais pas comment proceder, j´ai essayer des methodes sans resultat, je m´en remets aux experts du forum pour me faire avancer...
Ce n'est pas que je veux pas t'aider, mais si tu as déjà essayé des méthodes qui n'ont pas fonctionné il faudrait un peu les détailler pour qu'on ne cherche pas également dans une mauvaise direction...
Tu as vérifié sur search.cpan.org qu'il n'y avait pas déjà un mod ule qui parsait ce type de fichier ? Lorsque j'y cherche n'importe quel marque de routeur j'ai des dizaines de réponses...
-- Denis
Klaus
lepetitpere wrote:
je dois analyser avec Perl un fichier log comportant comme vous allez le constater un certain nombre de données...
je dois ressortir le nom du routeur (ici m10_0_as1), ensuite son interface ( ge-0/1/0), ensuite les unit appartenant a cet interfaces (de 50,51,....61.....à 185 par exemple j´ai pas tout mis pr ne pas faire bcp de place), sous son unit j doit ressortir son Vlan-Id,address, ensuite passer au suivant, et des qu´une nouvelle interface de ce meme logical-routers est trouvé, refaire la meme operation pour cet interface
La structure des données (avec des paranthèses "{" et "}" ) me semble plutôt hierarchique, donc mon premier réflexe est de les transformer d'abord en XML. Il y a une centaine des modules XML dans CPAN. Personnellement, je préfère le module "XML::Writer" pour créer des structures XML: voir http://search.cpan.org/~josephw/XML-Writer-0.600/Writer.pm
========================= ======================== use strict; use warnings;
use XML::Writer; my $xml_var;
my $xml_write = new XML::Writer(OUTPUT => $xml_var, DATA_MODE => 1, DATA_INDENT => 2);
Le résultat en format XML se trouve maintenant dans la variable "$xml_var" avec les paranthèses ouvertes "{" qui sont transformé en balise XML ouverte <bal id="..."> et les paranthèses fermées "}" qui sont transormé en balise XML fermée </bal>:
ensuite j'utilise le module "XML::Simple" pour transformer la structure XML ("$xml_var") dans une structure de Perl ("$xml_mem") voir http://search.cpan.org/~grantm/XML-Simple-2.14/lib/XML/Simple.pm
========================= ======================== use XML::Simple; my $xml_mem = XMLin($xml_var, ForceArray => 1, KeyAttr => ['bal']); ========================= ========================
finalement je navigue dans la structure Perl pour ressortir: - le nom du routeur (m10_0_as1), - ensuite son interface (ge-0/1/0), - ensuite les unit (50, 51, ..., 185) avec vlan-id et address
========================= ======================== for my $r_ptr ( @{ $xml_mem->{'bal'}->[0]->{'bal'} } ) { my $router = $r_ptr->{'id'}; print "router......: $routern";
for my $i_ptr ( @{ $r_ptr->{'bal'}->[0]->{'bal'} } ) { my $interface = $i_ptr->{'id'}; print " interface.: $interfacen";
for my $u_ptr ( @{ $i_ptr->{'bal'} } ) { my $unit = $u_ptr->{'id'}; $unit =~ s/^unit (.*?);?$/$1/; my $vlan = $u_ptr->{'ligne'}->[0]; $vlan =~ s/^vlan-id (.*?);?$/$1/; my $addr;
LOOP1: for my $a_ptr (@{ $u_ptr->{'bal'} }) { for my $b_ptr (@{ $a_ptr->{'bal'} }) { my $t = $b_ptr->{'id'}; if (defined $t and $t =~ /^address (.*?);?$/) { $addr = $1; last LOOP1; } } my $t = $a_ptr->{'ligne'}->[0]; if (defined $t and $t =~ /^address (.*?);?$/) { $addr = $1; last LOOP1; } } printf " unit....: %-3s ", $unit; printf "(vlan-id = %3s", $vlan; printf ", address = %s)n", $addr; } } } ========================= ========================
je dois ressortir le nom du routeur (ici m10_0_as1), ensuite son
interface ( ge-0/1/0), ensuite les unit appartenant
a cet interfaces (de 50,51,....61.....à 185 par exemple j´ai pas tout
mis pr ne pas faire bcp de place),
sous son unit j doit ressortir son Vlan-Id,address, ensuite passer au
suivant,
et des qu´une nouvelle interface de ce meme logical-routers est
trouvé, refaire la meme operation pour cet interface
La structure des données (avec des paranthèses "{" et "}" ) me semble
plutôt hierarchique, donc mon premier réflexe est de les transformer
d'abord en XML. Il y a une centaine des modules XML dans CPAN.
Personnellement, je préfère le module "XML::Writer" pour créer des
structures XML:
voir http://search.cpan.org/~josephw/XML-Writer-0.600/Writer.pm
========================= ========================
use strict;
use warnings;
use XML::Writer;
my $xml_var;
my $xml_write = new XML::Writer(OUTPUT => $xml_var,
DATA_MODE => 1, DATA_INDENT => 2);
Le résultat en format XML se trouve maintenant dans la variable
"$xml_var" avec les paranthèses ouvertes "{" qui sont transformé en
balise XML ouverte <bal id="..."> et les paranthèses fermées "}" qui
sont transormé en balise XML fermée </bal>:
ensuite j'utilise le module "XML::Simple" pour transformer la structure
XML ("$xml_var") dans une structure de Perl ("$xml_mem")
voir http://search.cpan.org/~grantm/XML-Simple-2.14/lib/XML/Simple.pm
========================= ========================
use XML::Simple;
my $xml_mem = XMLin($xml_var,
ForceArray => 1, KeyAttr => ['bal']);
========================= ========================
finalement je navigue dans la structure Perl pour ressortir:
- le nom du routeur (m10_0_as1),
- ensuite son interface (ge-0/1/0),
- ensuite les unit (50, 51, ..., 185) avec vlan-id et address
========================= ========================
for my $r_ptr ( @{ $xml_mem->{'bal'}->[0]->{'bal'} } ) {
my $router = $r_ptr->{'id'};
print "router......: $routern";
for my $i_ptr ( @{ $r_ptr->{'bal'}->[0]->{'bal'} } ) {
my $interface = $i_ptr->{'id'};
print " interface.: $interfacen";
for my $u_ptr ( @{ $i_ptr->{'bal'} } ) {
my $unit = $u_ptr->{'id'};
$unit =~ s/^unit (.*?);?$/$1/;
my $vlan = $u_ptr->{'ligne'}->[0];
$vlan =~ s/^vlan-id (.*?);?$/$1/;
my $addr;
LOOP1:
for my $a_ptr (@{ $u_ptr->{'bal'} }) {
for my $b_ptr (@{ $a_ptr->{'bal'} }) {
my $t = $b_ptr->{'id'};
if (defined $t
and $t =~ /^address (.*?);?$/) {
$addr = $1; last LOOP1;
}
}
my $t = $a_ptr->{'ligne'}->[0];
if (defined $t
and $t =~ /^address (.*?);?$/) {
$addr = $1; last LOOP1;
}
}
printf " unit....: %-3s ", $unit;
printf "(vlan-id = %3s", $vlan;
printf ", address = %s)n", $addr;
}
}
}
========================= ========================
je dois ressortir le nom du routeur (ici m10_0_as1), ensuite son interface ( ge-0/1/0), ensuite les unit appartenant a cet interfaces (de 50,51,....61.....à 185 par exemple j´ai pas tout mis pr ne pas faire bcp de place), sous son unit j doit ressortir son Vlan-Id,address, ensuite passer au suivant, et des qu´une nouvelle interface de ce meme logical-routers est trouvé, refaire la meme operation pour cet interface
La structure des données (avec des paranthèses "{" et "}" ) me semble plutôt hierarchique, donc mon premier réflexe est de les transformer d'abord en XML. Il y a une centaine des modules XML dans CPAN. Personnellement, je préfère le module "XML::Writer" pour créer des structures XML: voir http://search.cpan.org/~josephw/XML-Writer-0.600/Writer.pm
========================= ======================== use strict; use warnings;
use XML::Writer; my $xml_var;
my $xml_write = new XML::Writer(OUTPUT => $xml_var, DATA_MODE => 1, DATA_INDENT => 2);
Le résultat en format XML se trouve maintenant dans la variable "$xml_var" avec les paranthèses ouvertes "{" qui sont transformé en balise XML ouverte <bal id="..."> et les paranthèses fermées "}" qui sont transormé en balise XML fermée </bal>:
ensuite j'utilise le module "XML::Simple" pour transformer la structure XML ("$xml_var") dans une structure de Perl ("$xml_mem") voir http://search.cpan.org/~grantm/XML-Simple-2.14/lib/XML/Simple.pm
========================= ======================== use XML::Simple; my $xml_mem = XMLin($xml_var, ForceArray => 1, KeyAttr => ['bal']); ========================= ========================
finalement je navigue dans la structure Perl pour ressortir: - le nom du routeur (m10_0_as1), - ensuite son interface (ge-0/1/0), - ensuite les unit (50, 51, ..., 185) avec vlan-id et address
========================= ======================== for my $r_ptr ( @{ $xml_mem->{'bal'}->[0]->{'bal'} } ) { my $router = $r_ptr->{'id'}; print "router......: $routern";
for my $i_ptr ( @{ $r_ptr->{'bal'}->[0]->{'bal'} } ) { my $interface = $i_ptr->{'id'}; print " interface.: $interfacen";
for my $u_ptr ( @{ $i_ptr->{'bal'} } ) { my $unit = $u_ptr->{'id'}; $unit =~ s/^unit (.*?);?$/$1/; my $vlan = $u_ptr->{'ligne'}->[0]; $vlan =~ s/^vlan-id (.*?);?$/$1/; my $addr;
LOOP1: for my $a_ptr (@{ $u_ptr->{'bal'} }) { for my $b_ptr (@{ $a_ptr->{'bal'} }) { my $t = $b_ptr->{'id'}; if (defined $t and $t =~ /^address (.*?);?$/) { $addr = $1; last LOOP1; } } my $t = $a_ptr->{'ligne'}->[0]; if (defined $t and $t =~ /^address (.*?);?$/) { $addr = $1; last LOOP1; } } printf " unit....: %-3s ", $unit; printf "(vlan-id = %3s", $vlan; printf ", address = %s)n", $addr; } } } ========================= ========================
Merci Klaus La je me rends compte que je dois me mettre aux XML (je connais un peu mais pas suffisament...) Je travaille sur Linux suse , si vous pouvais me donner des tips pr configurer l´environnement necessaire afin de travailler dessus ca m´avancerait bcp.
Autre question:je comprends pas bien le cheminement, par ou commencer? qui lit quoi? qui appele qui dans quel ordre? Comme j´ai signalé dans mon descriptif il existe d´autres données dans le fichiers mais qui ne sont pas à utiliser (donc j´ai pas inseré cela dans ce code ci dessus) je ne sais pas si ca ne genera pas l´analyse???
Merci encore deja j´ai une piste
Merci Klaus
La je me rends compte que je dois me mettre aux XML (je connais un peu
mais pas suffisament...)
Je travaille sur Linux suse , si vous pouvais me donner des tips pr
configurer l´environnement necessaire afin de travailler dessus ca
m´avancerait bcp.
Autre question:je comprends pas bien le cheminement, par ou commencer?
qui lit quoi? qui appele qui dans quel ordre?
Comme j´ai signalé dans mon descriptif il existe d´autres données
dans le fichiers mais qui ne sont pas à utiliser (donc j´ai pas
inseré cela dans ce code ci dessus) je ne sais pas si ca ne genera pas
l´analyse???
Merci Klaus La je me rends compte que je dois me mettre aux XML (je connais un peu mais pas suffisament...) Je travaille sur Linux suse , si vous pouvais me donner des tips pr configurer l´environnement necessaire afin de travailler dessus ca m´avancerait bcp.
Autre question:je comprends pas bien le cheminement, par ou commencer? qui lit quoi? qui appele qui dans quel ordre? Comme j´ai signalé dans mon descriptif il existe d´autres données dans le fichiers mais qui ne sont pas à utiliser (donc j´ai pas inseré cela dans ce code ci dessus) je ne sais pas si ca ne genera pas l´analyse???
Merci encore deja j´ai une piste
Klaus
wrote:
Merci Klaus La je me rends compte que je dois me mettre aux XML (je connais un peu mais pas suffisament...)
bonne décision !
J'ai trouvé des sites avec des infos sur XML en général: ---------------------------------------------------------------- http://www.w3.org/XML/ http://www.w3.org/XML/1999/XML-in-10-points.fr.html http://www.topxml.com/ http://xmlfr.org/index/object.title/xml/
Je travaille sur Linux suse , si vous pouvais me donner des tips pr configurer l´environnement necessaire afin de travailler dessus ca m´avancerait bcp.
Je suis désolé, je ne sais pas comment configurer l'environnement de Linux Suse, je travaille sur Windows XP avec Activestate Perl:
C:>perl -v This is perl, v5.8.8 built for MSWin32-x86-multi-thread
Autre question:je comprends pas bien le cheminement, par ou commencer? qui lit quoi? qui appele qui dans quel ordre?
Voici les étapes de ma solution:
Etape 1: lire le fichier <DATA>, ligne par ligne et traduire le "{" en "<bal id=...>" et le "}" en "</bal>", le résultat se trouve dans un fichier "virtuel" en mémoire: le scalar "$xml_var".
Etape 2: transformer le fichier "virtuel" ("$xml_var") en structure de Perl ("$xml_mem")
Etape 3: Naviguer la structure Perl pour ressortir le nom du routeur, ensuite son interface, et finalement les les units avec vlan-id et address. (j'ai appris la stratégie de naviguer une structure de Perl dans http://perl.enstimac.fr/DocFr/perllol.html )
En fait, dans ma réponse précédente, j'ai donné un programme perl complet (mais éclaté en plusieurs morceaux, il faut donc copier/coller les morceaux (y compris la section __DATA__) dans un seul fichier, ça devrait fonctionner tout seul. (sous condition que les modules "XML::Writer" et "XML::Simple" sont bien intallés).
Comme j´ai signalé dans mon descriptif il existe d´autres données dans le fichiers mais qui ne sont pas à utiliser (donc j´ai pas inseré cela dans ce code ci dessus) je ne sais pas si ca ne genera pas l´analyse???
Avec ma demarche en utilisant XML::Simple, il est probable que l'analyse sera géné par d'autres données, mais je voudrais signaler que XML::Simple n'est qu'une première stratégie/module parmi des centaines des stratégies/modules XML.
Parmi les centaines des modules XML sur CPAN, j'utilise 5: ---------------------------------------------------------------- http://search.cpan.org/~josephw/XML-Writer-0.600/Writer.pm http://search.cpan.org/~grantm/XML-Simple-2.14/lib/XML/Simple.pm http://search.cpan.org/~msergeant/XML-Parser-2.34/Parser.pm http://search.cpan.org/~podmaster/XML-TokeParser-0.05/TokeParser.pm http://search.cpan.org/~mirod/XML-Twig-3.26/Twig.pm
Il est probable qu'il existe autres stratégies/modules XML qui sont beaucoup mieux adapté au problème (peut-être XML::Twig ? -- ou XML::TokeParser ?)
Merci encore deja j´ai une piste
De rien. Je suis toujours content d'assister.
lepetitjoe@caramail.com wrote:
Merci Klaus
La je me rends compte que je dois me mettre aux XML (je connais un peu
mais pas suffisament...)
bonne décision !
J'ai trouvé des sites avec des infos sur XML en général:
----------------------------------------------------------------
http://www.w3.org/XML/
http://www.w3.org/XML/1999/XML-in-10-points.fr.html
http://www.topxml.com/
http://xmlfr.org/index/object.title/xml/
Je travaille sur Linux suse , si vous pouvais me donner des tips pr
configurer l´environnement necessaire afin de travailler dessus ca
m´avancerait bcp.
Je suis désolé, je ne sais pas comment configurer l'environnement de
Linux Suse, je travaille sur Windows XP avec Activestate Perl:
C:>perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
Autre question:je comprends pas bien le cheminement, par ou commencer?
qui lit quoi? qui appele qui dans quel ordre?
Voici les étapes de ma solution:
Etape 1:
lire le fichier <DATA>, ligne par ligne et traduire le "{" en "<bal
id=...>" et le "}" en "</bal>", le résultat se trouve dans un fichier
"virtuel" en mémoire: le scalar "$xml_var".
Etape 2:
transformer le fichier "virtuel" ("$xml_var") en structure de Perl
("$xml_mem")
Etape 3:
Naviguer la structure Perl pour ressortir le nom du routeur, ensuite
son interface, et finalement les les units avec vlan-id et address.
(j'ai appris la stratégie de naviguer une structure de Perl dans
http://perl.enstimac.fr/DocFr/perllol.html )
En fait, dans ma réponse précédente, j'ai donné un programme perl
complet (mais éclaté en plusieurs morceaux, il faut donc
copier/coller les morceaux (y compris la section __DATA__) dans un seul
fichier, ça devrait fonctionner tout seul. (sous condition que les
modules "XML::Writer" et "XML::Simple" sont bien intallés).
Comme j´ai signalé dans mon descriptif il existe d´autres données
dans le fichiers mais qui ne sont pas à utiliser (donc j´ai pas
inseré cela dans ce code ci dessus) je ne sais pas si ca ne genera pas
l´analyse???
Avec ma demarche en utilisant XML::Simple, il est probable que
l'analyse sera géné par d'autres données, mais je voudrais signaler
que XML::Simple n'est qu'une première stratégie/module parmi des
centaines des stratégies/modules XML.
Parmi les centaines des modules XML sur CPAN, j'utilise 5:
----------------------------------------------------------------
http://search.cpan.org/~josephw/XML-Writer-0.600/Writer.pm
http://search.cpan.org/~grantm/XML-Simple-2.14/lib/XML/Simple.pm
http://search.cpan.org/~msergeant/XML-Parser-2.34/Parser.pm
http://search.cpan.org/~podmaster/XML-TokeParser-0.05/TokeParser.pm
http://search.cpan.org/~mirod/XML-Twig-3.26/Twig.pm
Il est probable qu'il existe autres stratégies/modules XML qui sont
beaucoup mieux adapté au problème (peut-être XML::Twig ? -- ou
XML::TokeParser ?)
Merci Klaus La je me rends compte que je dois me mettre aux XML (je connais un peu mais pas suffisament...)
bonne décision !
J'ai trouvé des sites avec des infos sur XML en général: ---------------------------------------------------------------- http://www.w3.org/XML/ http://www.w3.org/XML/1999/XML-in-10-points.fr.html http://www.topxml.com/ http://xmlfr.org/index/object.title/xml/
Je travaille sur Linux suse , si vous pouvais me donner des tips pr configurer l´environnement necessaire afin de travailler dessus ca m´avancerait bcp.
Je suis désolé, je ne sais pas comment configurer l'environnement de Linux Suse, je travaille sur Windows XP avec Activestate Perl:
C:>perl -v This is perl, v5.8.8 built for MSWin32-x86-multi-thread
Autre question:je comprends pas bien le cheminement, par ou commencer? qui lit quoi? qui appele qui dans quel ordre?
Voici les étapes de ma solution:
Etape 1: lire le fichier <DATA>, ligne par ligne et traduire le "{" en "<bal id=...>" et le "}" en "</bal>", le résultat se trouve dans un fichier "virtuel" en mémoire: le scalar "$xml_var".
Etape 2: transformer le fichier "virtuel" ("$xml_var") en structure de Perl ("$xml_mem")
Etape 3: Naviguer la structure Perl pour ressortir le nom du routeur, ensuite son interface, et finalement les les units avec vlan-id et address. (j'ai appris la stratégie de naviguer une structure de Perl dans http://perl.enstimac.fr/DocFr/perllol.html )
En fait, dans ma réponse précédente, j'ai donné un programme perl complet (mais éclaté en plusieurs morceaux, il faut donc copier/coller les morceaux (y compris la section __DATA__) dans un seul fichier, ça devrait fonctionner tout seul. (sous condition que les modules "XML::Writer" et "XML::Simple" sont bien intallés).
Comme j´ai signalé dans mon descriptif il existe d´autres données dans le fichiers mais qui ne sont pas à utiliser (donc j´ai pas inseré cela dans ce code ci dessus) je ne sais pas si ca ne genera pas l´analyse???
Avec ma demarche en utilisant XML::Simple, il est probable que l'analyse sera géné par d'autres données, mais je voudrais signaler que XML::Simple n'est qu'une première stratégie/module parmi des centaines des stratégies/modules XML.
Parmi les centaines des modules XML sur CPAN, j'utilise 5: ---------------------------------------------------------------- http://search.cpan.org/~josephw/XML-Writer-0.600/Writer.pm http://search.cpan.org/~grantm/XML-Simple-2.14/lib/XML/Simple.pm http://search.cpan.org/~msergeant/XML-Parser-2.34/Parser.pm http://search.cpan.org/~podmaster/XML-TokeParser-0.05/TokeParser.pm http://search.cpan.org/~mirod/XML-Twig-3.26/Twig.pm
Il est probable qu'il existe autres stratégies/modules XML qui sont beaucoup mieux adapté au problème (peut-être XML::Twig ? -- ou XML::TokeParser ?)