Bonjour à tous
J'ai un script perl à écrire, qui doit regarder le contenu d'un champ d'un fichier XML et effectuer une action en fonction de la valeur de ce champ.
J'utilise pour cela le module XML::Simple.
Je cherche donc le contenu du champ 'used-grammar', mais le tiret pose apparement problème...
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 #!/usr/local/bin/perl use strict; #vérifie que toutes les variables sont bien déclarées avec my use Carp; #Recherche les erreurs de syntaxe dans le programme use XML::Simple; my $xml = new XML::Simple (KeyAttr=>[]); my @liste_xml = glob('*-0000????.xml'); my $count=0; for($count=0; $count <= $#liste_xml; $count++) { my $data = $xml->XMLin(@liste_xml[$count]); my $type; if(ref($data->{utterance}) eq 'ARRAY') { $type=$data->{utterance}->[0]->{load}->{used-grammar}; } else { $type=$data->{utterance}->{load}->{used-grammar}; } }
Lorsque j'execute le script, voici les erreurs qui s'affichent :
Bareword "used" not allowed while "strict subs" in use at transcription.pl line 30.
Bareword "grammar" not allowed while "strict subs" in use at transcription.pl line 30.
Bareword "used" not allowed while "strict subs" in use at transcription.pl line 34.
Bareword "grammar" not allowed while "strict subs" in use at transcription.pl line 34.
Execution of transcription.pl aborted due to compilation errors
Voilà, si vous avez une idée...
J'ai essayé en mettant guillemets, backslashes, un peu de tout autour de 'used-grammar' mais rien n'y fait. La recherche fonctionne correctement si le champ recherché n'a pas de tiret.
Merci !
Partager