explication sur un code perl
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:
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 !
} |
Citation:
my($protein, %attrs ) = @_;
cela signifie que ma fonction aura deux variables, un scalaire et une table de hachage;mais pourquoi on n'a pas rajouter
Citation:
my($name, $desc);
ce sont pourtant des variable ??
Citation:
push( @stack, { protein=>$protein});
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 ?
cela signifie si ma table de hachage existe ?vu qu'on la declarer en haut forcement elle existe.
Citation:
while( my( $key, $value ) = each( %attrs )) {
je n'ai pas trop saisi cette partie ..??
Mercii