taille du tableau avec XML:Simple et option du module - Perl - Programmation
Marsh Posté le 11-10-2006 à 14:03:15
pour obtenir le nombre, j'ai essayer avec une boucle while
Code :
|
mais ma boucle tourne à l 'infini
Marsh Posté le 11-10-2006 à 15:12:26
pour les options est ce que cela peut venir de la version de mon module
j'ai fait cela et apparament il est à jour
Citation : |
Marsh Posté le 11-10-2006 à 15:55:29
Tu as trois problèmes à gérer : les références, la gestion des types de base PERL (hâchages, tableaux, scalaires, ...), et l'imbrication de tout ça.
Tout d'abord, de la documentation :
Types de base : http://perldoc.perl.org/perldata.html
Références : http://perldoc.perl.org/perlref.html
Je vais ensuite expliquer pour ton cas précis, mais tu devrais lire ces deux pages, en entier, et souvent t'y référer. J'y ai moi aussi recours, souvent, parce que ce n'est parfois pas intuitif.
Quoiqu'il en soit, ta variable $VAR1 est une référence de hâchage de tableau de hâchages.
Si, si.
Tout d'abord, pour accéder à quoique ce soit dans tes références, tu vas devoir déréférencer en indiquant le type.
Par exemple, pour accéder à la liste des clefs de hâchage contenus dans $VAR1 :
print "$_\n" foreach keys %{ $VAR1 }; |
Ici, par l'utilisation de la syntaxe "%{ }", j'ai indiqué à l'interpréteur PERL que $VAR1 était une référence de hâchage.
J'ai obtenu "table" en réponse, parce que c'est la seule clef contenue dans ce hâchage.
Ensuite, pour connaître le nombre d'éléments contenus dans le tableau pointé par la clef de hâchage "table" :
print "Nombre d'éléments de la section 'table' : ", scalar(@{ $VAR1->{table} }), "\n"; |
Là, j'ai accédé au contenu de ma clef de hâchage en déréférençant $VAR1 vers la clef "table".
J'ai ensuite déréférencé mon résultat, avec @{}, pour indiquer qu'il s'agit d'une référence de tableau.
Et, puisque tu as lu le premier lien que j'ai posté, tu sais qu'un tableau en contexte scalaire retourne le nombre d'éléments qu'il contient, j'ai donc forcé le contexte avec scalar().
Enfin, pour exemple, je vais imprimer la liste des clefs de hâchage contenu en première position du tableau obtenu :
print "Clefs du premier élément du tableau : \n"; |
Voila, en très rapide, ce que ça donne.
Mais comme tu peux le voir, il vaut mieux maîtriser les principes de base du langage avant de se lancer dans ce genre de gymnastique. Je ne saurais donc trop te conseiller de zoner à fond le site http://perldoc.perl.org , et d'y revenir souvent y chercher la documentation nécessaire.
Marsh Posté le 11-10-2006 à 16:09:49
A propos des références [edit]et des nested structures d'ailleurs[/edit] si un jour tu tombes sur le livre advanced perl programming, tout à la fin tu as un excellent chapitre "Syntax summary" qui résume tout ça de manière très claire.
Marsh Posté le 11-10-2006 à 11:23:13
salut,
J'utilise le module XML::Simple et j'obtiens se resultat
$VAR1 = {
'table' => [
{
'nom' => 'pilote',
'champs' => {
'prenom' => 'jina',
'nom' => 'john',
'intitule' => 'numpilote'
}
},
{
'nom' => 'vol',
'champs' => {
'intitule' => 'xx32',
'ville' => 'paris'
}
}
]
};
à partir de ce fichier xml
<?xml version="1.0" encoding="windows-1250"?>
<base>
<table nom="pilote">
<champs intitule="numpilote" nom="john" prenom="jina">
</champs>
</table>
<table nom="vol">
<champs intitule="xx32" ville="paris">
</champs>
</table>
</base
j'aurai voulu faire une boucle pour obtenir le nom de chaque table mais comment faire pour avoir la taille du tableau ??
je ne comprends pas lorsque j'essai d'utiliser les options du module (option qui figure sur cpan) ,que je lance mon script l'options n'est jamais reconnu
Par exemple j'utilise cette option
et quand je lance le script, j'ai cela
Unrecognised option: KeyAttr at C:\Documents and Settings\v\Bureau\v\pars.pl line 11
et c'est pareil pour les autres option
Merci
Message édité par donny3 le 11-10-2006 à 11:43:01