Comprendre des lignes d'un script
lefreeman63
Messages postés
136
Date d'inscription
Statut
Membre
Dernière intervention
-
-
-
Bonjour,
Tout le monde je suis en train d'essayer de travailler sur un script en perl développé par un ancien collègue. Et je rencontre un certain problème à comprendre la signification de certaines lignes et la différences entre le "if" et le "else".
J'espère que vous pourrez m'aidez Merci d'avance.
Tout le monde je suis en train d'essayer de travailler sur un script en perl développé par un ancien collègue. Et je rencontre un certain problème à comprendre la signification de certaines lignes et la différences entre le "if" et le "else".
J'espère que vous pourrez m'aidez Merci d'avance.
my $xmlfile = XMLin($xml_file ) or logAndDie "[ERROR] Can not read XML file $xml_file !\n"; #print Dumper($xmlfile); <bold> if ( ref($xmlfile->{LIST_G_BURSTING}->{G_BURSTING}) ne 'ARRAY' )</bold> { my $Addr = $xmlfile->{LIST_G_BURSTING}->{G_BURSTING}; if ( $number_version == 2 ) { &all_burst($Addr); } else { &treat_pdf($Addr); } } else { <bold> foreach my $Addr ( @{ $xmlfile->{LIST_G_BURSTING}->{G_BURSTING} } )</bold> { if ( $number_version == 2 ) { &all_burst($Addr); } else { &treat_pdf($Addr); } } }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Comprendre des lignes d'un script
- Script vidéo youtube - Guide
- Partager des photos en ligne - Guide
- Mas script - Accueil - Windows
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Écrire plusieurs lignes dans une cellule excel mac - Guide
2 réponses
Salut lefreeman63,
Il semble que cet extrait de code utilise un module
Le module transforme le fichier XML en un hash dont les clefs sont les balises XML.
Dans l'arborescence de ce fichier XML, visiblement, il peut y avoir à l'emplacement {LIST_G_BURSTING}->{G_BURSTING} soit :
- une seule valeur (une seule $Addr)
- ou une liste de plusieurs valeurs (plusieurs $Addr)
Le premier if vérifie si à cet emplacement se trouve une référence à un tableau. Si ce n'est pas le cas, il en déduit qu'une seule valeur est stockée, et cette valeur est mise dans $Addr pour être traitée.
Le else traite donc le cas où cet emplacement stocke une référence à un tableau. Le foreach parcours ce tableau, en extrayant les différentes valeurs successivement dans une variable $Addr et en les traitant successivement.
Regarde la structure du fichier XML traité pour comprendre ce qui est fait.
Voilà aussi de la documentation pouvant t'aider :
https://metacpan.org/pod/release/GRANTM/XML-Simple-2.22/lib/XML/Simple.pm
https://perldoc.perl.org/functions/ref
https://perldoc.perl.org/perlreftut (simplifié)
https://perldoc.perl.org/perlref (complet)
Dal
Il semble que cet extrait de code utilise un module
Perl XML::Simple(bien que le
use XML::Simple;ne soit pas présent dans ce que tu as posté) pour parser un fichier XML.
Le module transforme le fichier XML en un hash dont les clefs sont les balises XML.
Dans l'arborescence de ce fichier XML, visiblement, il peut y avoir à l'emplacement {LIST_G_BURSTING}->{G_BURSTING} soit :
- une seule valeur (une seule $Addr)
- ou une liste de plusieurs valeurs (plusieurs $Addr)
Le premier if vérifie si à cet emplacement se trouve une référence à un tableau. Si ce n'est pas le cas, il en déduit qu'une seule valeur est stockée, et cette valeur est mise dans $Addr pour être traitée.
Le else traite donc le cas où cet emplacement stocke une référence à un tableau. Le foreach parcours ce tableau, en extrayant les différentes valeurs successivement dans une variable $Addr et en les traitant successivement.
Regarde la structure du fichier XML traité pour comprendre ce qui est fait.
Voilà aussi de la documentation pouvant t'aider :
https://metacpan.org/pod/release/GRANTM/XML-Simple-2.22/lib/XML/Simple.pm
https://perldoc.perl.org/functions/ref
https://perldoc.perl.org/perlreftut (simplifié)
https://perldoc.perl.org/perlref (complet)
Dal
Bonjour,
Je ne sait pas si cela va répondre à ta question mais le IF défini une première condition (traduit par un SI), dans le cas ou la condition est respecter le script ne va prendre que les ligne dans le IF, si elle n'ait pas respecter il passe à la suite. Le ELSE est la deuxième condition qui peut être traduit par SINON, elle s’exécute quand la condition IF n'est pas respecter.
En espérant avoir pu t'aider.
CDT
Je ne sait pas si cela va répondre à ta question mais le IF défini une première condition (traduit par un SI), dans le cas ou la condition est respecter le script ne va prendre que les ligne dans le IF, si elle n'ait pas respecter il passe à la suite. Le ELSE est la deuxième condition qui peut être traduit par SINON, elle s’exécute quand la condition IF n'est pas respecter.
En espérant avoir pu t'aider.
CDT
C'est gentil pour ton aide.
Il semble que le gras que j'avais mis sur les lignes est disparus en plus :-(
J'ai un souci en particulier avec les conditions du IF et tous ce qui concerne le XML :-/
ref($xmlfile->{LIST_G_BURSTING}->{G_BURSTING}) ne 'ARRAY'
my $Addr = $xmlfile->{LIST_G_BURSTING}->{G_BURSTING};
foreach my $Addr ( @{ $xmlfile->{LIST_G_BURSTING}->{G_BURSTING} }
Il semble que le gras que j'avais mis sur les lignes est disparus en plus :-(
J'ai un souci en particulier avec les conditions du IF et tous ce qui concerne le XML :-/
ref($xmlfile->{LIST_G_BURSTING}->{G_BURSTING}) ne 'ARRAY'
my $Addr = $xmlfile->{LIST_G_BURSTING}->{G_BURSTING};
foreach my $Addr ( @{ $xmlfile->{LIST_G_BURSTING}->{G_BURSTING} }