Bonjour,

débutant en perl (niveau zéro de chez zéro même ), et devant effectuer de toute urgence une correction sur un exe en perl, je me tourne vers vous tous.

J'explique : je dois récupérer des infos d'un fichier xml (balises ou attributs).
Pour cela j'ai développé un petit log de test qui marche à merveille.
Le problème c'est pour incorporer mon code à celui déjà existant, car il faut que je le mette dans une fonction, qui retourne au final une hashtable...

Dans cette hashtable, on aura :
[code balise n°1] contenu balise n°1; contenu attribut n°1
[code balise n°2] contenu balise n°2; contenu attribut n°2
etc...

j'utilise xml::twig car cela me permet de trouver les balises qui peuvent être à des niveaux différents d'un fichier à l'autre, mais dans l'absolu, l'information est toujours présente dans les fichiers.

Donc, quand j'incorpore mon bout de code (qui ne faisait qu'afficher à l'écran les infos), dans le programme à débogger, je n'arrive pas à faire suivre les données.
Voici le code:
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
 
sub getpath{
	#retourne la hashMap avec le titre N° et le nom de fichier
	my ($goodFileXML, $Folder)=@_;
	my $ddate = ""; #passer la date de revision en parametre
	my $refHash = extractTitle($goodFileXML, \$ddate, $Folder);
	return $refHash;
}
 
sub extractTitle{
	my ($ficName, $refDate, $Folder) = @_;
	#créer une map avec le titre et les noms des fichiers
	my %hashTitleFic;
 
# Utilisation des handlers
	my $twig = new XML::Twig( Twig_handlers => { 'du-sol' => \&dusol, }, );
	# creation d'un objet twig
	$twig->parsefile($ficName);
 
        my ($refh) = \%hashTitleFic;
 
	return $refh; #retourner la référence sur la hashmap
}
 
 
sub dusol {
	my ($twig, $TwigSol, %hashTitleFic, $key) = @_;
        my $value = "";
 
	$value= $TwigSol->field('title');
	$key= $TwigSol->att('code');
	foreach my $TwigRef ( $TwigSol->children('sol-mdata-ref') ) {
		$value=$value.";".$TwigRef->att('href');
        }
	$hashTitleFic{$key} = $value;
 
	# vide de la memoire le contenu de la balise du-sol
       	#$twig->purge;
	return %hashTitleFic;
}
ps : mon code qui marche début aux Handlers....
et ce que je souhaite faire suivre est %hashTitleFic

j'espère avoir été assez claire dans mon explication.

Pouvez-vous m'aider?
D'avance merci pour vos réponses et votre aide.

Cordialement,
Pirotes31.