Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Using a hash as a reference is deprecated

16 réponses
Avatar
Le Souricier Gris
Bonjour,

afin de progresser dans ma compr=E9hension du PERL, je cherche =E0 savoir
comment corriger le probl=E8me :
Using a hash as a reference is deprecated

La structure de donn=E9es que je d=E9sire utilis=E9e est celle-ci (affich=
=E9e
=E0 l'aide de Dumper) :
$VAR1 =3D {
'lang' =3D> 'fr_FR',
'ver' =3D> '0.01',
'command' =3D> {
'setpenwidth' =3D> {
'keyword' =3D> 'taillecrayon',
'alias' =3D> 'ftc'
},
'begin' =3D> {
'keyword' =3D> '['
}
}
};

Aussi, afin de r=E9cup=E9rer les =E9l=E9ments, j'ai =E9crit le code suivant=
:

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

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

Quelqu'un pourrait t'il me corriger et tenter de m'expliquer cette
syntaxe d=E9pr=E9ci=E9e ?

Merci

10 réponses

1 2
Avatar
Nicolas George
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 ?
Avatar
ebrnospam
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
Avatar
Paul Gaborit
À (at) Wed, 24 Sep 2008 13:18:40 -0700 (PDT),
Le Souricier Gris écrivait (wrote):
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Nicolas George
ebrnospam wrote in message <48daa91e$0$4587$:
$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 ?




Avatar
Paul Gaborit
À (at) 24 Sep 2008 21:16:35 GMT,
Nicolas George <nicolas$ écrivait (wrote):
ebrnospam wrote in message <48daa91e$0$4587$:
$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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Le Souricier Gris
On 24 sep, 23:15, Paul Gaborit wrote:
(at) Wed, 24 Sep 2008 13:18:40 -0700 (PDT),
Le Souricier Gris crivait (wrote):

> 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 - <http://perso.enstimac.fr/~gaborit/>
Perl en fran ais - <http://perl.enstimac.fr/>



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).
Avatar
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 ?
Avatar
Paul Gaborit
À (at) Thu, 25 Sep 2008 01:02:40 -0700 (PDT),
Le Souricier Gris écrivait (wrote):
On 24 sep, 23:15, Paul Gaborit wrote:
(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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Paul Gaborit
À (at) 25 Sep 2008 08:36:15 GMT,
Nicolas George <nicolas$ écrivait (wrote):
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 - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
Avatar
Nicolas George
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.
1 2