salut,
Je suis debutant en perl et je voulais essayer de parser un fichier xml donc j'ai recuperer un code en faisant une recherche sur le forum mais il y a certaine chose que je ne comprend pas.
Voila 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 #!/usr/bin/perl use XML::Parser; # initialize the parser my $parser = XML::Parser->new( Handlers => { Start=>\&handle_start, End=>\&handle_end, }); $parser->parsefile( "./prot.xml" ); my @stack; sub handle_start { my($name, $desc); my($protein, %attrs ) = @_; push( @stack, { protein=>$protein}); if( %attrs ) { while( my( $key, $value ) = each( %attrs )) { if ($key eq "protein_name") { $name = $value; open FILE, ">>./Result.txt" or die "Peut pas ouvrir Result.txt !!"; print FILE "$name\t"; } if ($key eq "protein_description") { $desc = $value; open FILE, ">>./Result.txt" or die "Peut pas ouvrir Result.txt !!"; print FILE "$desc\n"; } } } } sub handle_end { #Do nothing ! }cela signifie que ma fonction aura deux variables, un scalaire et une table de hachage;mais pourquoi on n'a pas rajoutermy($protein, %attrs ) = @_;ce sont pourtant des variable ??my($name, $desc);
cette partie du code sert uniquement à alimenter un tableau avec protein=>nom de la proteine , il appeler dans la fonction seulement, il n'est pas vitale pour le code ?push( @stack, { protein=>$protein});
cela signifie si ma table de hachage existe ?vu qu'on la declarer en haut forcement elle existe.if( %attrs ) {
je n'ai pas trop saisi cette partie ..??while( my( $key, $value ) = each( %attrs )) {
Mercii
Partager