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.

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};
	}
}
Je cherche donc le contenu du champ 'used-grammar', mais le tiret pose apparement problème...

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 !