Using a hash as a reference is deprecated

Le
Le Souricier Gris
Bonjour,

afin de progresser dans ma compréhension du PERL, je cherche à savoir
comment corriger le problème :
Using a hash as a reference is deprecated

La structure de données que je désire utilisée est celle-ci (affich=
ée
à l'aide de Dumper) :
$VAR1 = {
'lang' => 'fr_FR',
'ver' => '0.01',
'command' => {
'setpenwidth' => {
'keyword' => 'taillecrayon',
'alias' => 'ftc'
},
'begin' => {
'keyword' => '['
}
}
};

Aussi, afin de récupérer les éléments, j'ai écrit le code suivant=
:

my $commande=$data->{'command'};

foreach my $englogokey (keys (%$commande))
{
print $englogokey."";
}

Quelqu'un pourrait t'il me corriger et tenter de m'expliquer cette
syntaxe dépréciée ?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #17330851
Le Souricier Gris wrote in message
$VAR1 = {
my $commande=$data->{'command'};



C'est exprès que la variable n'a pas le même nom les deux fois ?
ebrnospam
Le #17330991
Nicolas George a écrit :
Le Souricier Gris wrote in message
$VAR1 = {
my $commande=$data->{'command'};



C'est exprès que la variable n'a pas le même nom les deux fois ?


$VAR1 est une variable utilisée par DUMPER, aucun rapport avec une
quelconque programmation.

En espérant avoir répondu à votre question.

Eric
Paul Gaborit
Le #17331231
À (at) Wed, 24 Sep 2008 13:18:40 -0700 (PDT),
Le Souricier Gris
afin de progresser dans ma compréhension du PERL, je cherche à savoir
comment corriger le problème :
Using a hash as a reference is deprecated



Sur quelle ligne de votre code se produit ce message ?
Avec quelle version de Perl ?

Quelqu'un pourrait t'il me corriger et tenter de m'expliquer cette
syntaxe dépréciée ?



Chez moi, le code ci-dessou ne produit ni message d'erreur ni message
d'avertissement. Il affiche juste 'setpenwidth' et 'begin'.

################
#!/usr/bin/perl -w
use strict;
use warnings;

my $data {
lang => 'fr_FR',
ver => '0.01',
command => {
setpenwidth => {
keyword => 'taillecrayon',
alias => 'ftc'
},
begin => {
keyword => '['
},
},
};

my $commande = $data->{command};

foreach my $englogokey (keys %$commande) {
print "$englogokeyn";
}
#################


--
Paul Gaborit - Perl en français -
Nicolas George
Le #17331141
ebrnospam wrote in message
$VAR1 est une variable utilisée par DUMPER, aucun rapport avec une
quelconque programmation.



Je sais. Et si elle s'appelle $VAR1, elle ne s'appelle pas $data, donc si on
l'appelle $data, ça ne marche pas. Donc je re-pose la question :

C'est exprès que la variable n'a pas le même nom les deux fois ?




Paul Gaborit
Le #17331381
À (at) 24 Sep 2008 21:16:35 GMT,
Nicolas George
ebrnospam wrote in message
$VAR1 est une variable utilisée par DUMPER, aucun rapport avec une
quelconque programmation.



Je sais. Et si elle s'appelle $VAR1, elle ne s'appelle pas $data, donc si on
l'appelle $data, ça ne marche pas. Donc je re-pose la question :

C'est exprès que la variable n'a pas le même nom les deux fois ?







Data::Dumper ne connait pas le nom associé à la valeur qu'on lui
demande d'afficher. Il affiche donc un nom générique ($VAR1) qui ne
préjuge en rien du nom (ou de l'un des noms) réellement utilisé dans
le code. Et le PO indique bien que ce n'est pas du code mais la sortie
d'un appel à Data::Dumper... Donc tout cela me semble très clair !

;-)

--
Paul Gaborit - Perl en français -
Le Souricier Gris
Le #17333231
On 24 sep, 23:15, Paul Gaborit
(at) Wed, 24 Sep 2008 13:18:40 -0700 (PDT),
Le Souricier Gris
> afin de progresser dans ma compr hension du PERL, je cherche savoir
> comment corriger le probl me :
> Using a hash as a reference is deprecated

Sur quelle ligne de votre code se produit ce message ?
Avec quelle version de Perl ?

> Quelqu'un pourrait t'il me corriger et tenter de m'expliquer cette
> syntaxe d pr ci e ?

Chez moi, le code ci-dessou ne produit ni message d'erreur ni message
d'avertissement. Il affiche juste 'setpenwidth' et 'begin'.

################
#!/usr/bin/perl -w
use strict;
use warnings;

my $data =
{
lang => 'fr_FR',
ver => '0.01',
command => {
setpenwidth => {
keyword => 'taillecrayon',
alias => 'ftc'
},
begin => {
keyword => '['
},
},
};

my $commande = $data->{command};

foreach my $englogokey (keys %$commande) {
print "$englogokeyn";}

#################

--
Paul Gaborit - Perl en fran ais -


Sur un autre pote, la version est :
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi

J'ai rajouté la commande désirée :
print $commande->{$englogokey}->{'keyword'}."n";

Et pas d'erreur, j'envoie le programme complet ce soir (Utilise
XML::Simple).
Nicolas George
Le #17333561
Paul Gaborit wrote in message
Data::Dumper ne connait pas le nom associé à la valeur qu'on lui
demande d'afficher. Il affiche donc un nom générique ($VAR1) qui ne
préjuge en rien du nom (ou de l'un des noms) réellement utilisé dans
le code. Et le PO indique bien que ce n'est pas du code mais la sortie
d'un appel à Data::Dumper... Donc tout cela me semble très clair !



Oui, je sais lire.

Ce que je lui demande, c'est pourquoi cette variable qui s'appelle $VAR1,
trois ligne plus bas il l'appelle $data. C'est si compliqué à comprendre que
quand on n'utilise pas le même nom pour la même variable, en général ça ne
marche pas ?
Paul Gaborit
Le #17335571
À (at) Thu, 25 Sep 2008 01:02:40 -0700 (PDT),
Le Souricier Gris
On 24 sep, 23:15, Paul Gaborit
(at) Wed, 24 Sep 2008 13:18:40 -0700 (PDT),




[...]
Sur quelle ligne de votre code se produit ce message ?




[...]
J'ai rajouté la commande désirée :
print $commande->{$englogokey}->{'keyword'}."n";

Et pas d'erreur, j'envoie le programme complet ce soir (Utilise
XML::Simple).



Donc l'erreur n'est pas liée à cette ligne. Si vous répondiez à ma
première question (à quelle ligne à lieu l'erreur), cela vous aiderait
sûrement (et nous aussi pour éventuellement vous aider).

--
Paul Gaborit - Perl en français -
Paul Gaborit
Le #17335921
À (at) 25 Sep 2008 08:36:15 GMT,
Nicolas George
Paul Gaborit wrote in message
Data::Dumper ne connait pas le nom associé à la valeur qu'on lui
demande d'afficher. Il affiche donc un nom générique ($VAR1) qui ne
préjuge en rien du nom (ou de l'un des noms) réellement utilisé dans
le code. Et le PO indique bien que ce n'est pas du code mais la sortie
d'un appel à Data::Dumper... Donc tout cela me semble très clair !



Oui, je sais lire.

Ce que je lui demande, c'est pourquoi cette variable qui s'appelle $VAR1,
trois ligne plus bas il l'appelle $data.

C'est si compliqué à comprendre que quand on n'utilise pas le même
nom pour la même variable, en général ça ne marche pas ?



Est-ce si compliqué de comprendre que les deux bouts de code (le
premier bout n'en étant pas un mais un simple affichage) n'ont rien à
voir entre eux si ce n'est que l'un permet d'exposer une structure de
données utilisée par l'autre ?

Est-ce si compliqué de comprendre qu'il n'existe aucune variable
nommée $VAR1 ?

Est-ce si compliqué de comprendre que le bout de code affiché par
Data::Dumper n'est jamais utilisé ?

Le seul effort de déduction demandé au lecteur était d'intuiter que
$data contenait effectivement la structure de données exposée
préalablement et arbitrairement nommé $VAR1 par Data::Dumper...
Est-ce si compliqué à déduire ? ;-)

--
Paul Gaborit - Perl en français -
Nicolas George
Le #17336551
Paul Gaborit wrote in message
Le seul effort de déduction demandé au lecteur était d'intuiter que
$data contenait effectivement la structure de données exposée
préalablement et arbitrairement nommé $VAR1 par Data::Dumper...



C'est précisément l'objet de ma question. Si tu commences à faire confiance
aux gens qui postent ici de ne pas faire d'erreurs grotesques de ce genre,
tu n'es pas sorti de l'auberge.
Publicité
Poster une réponse
Anonyme