Références : Problème de syntaxe

Le
Le Souricier Gris
Je dsire drfrencer un tableau stock dans un lment de
table de hashage J'arrive bien accder mon premier lment
mais j'aimerai obtenir la liste.

#!/usr/bin/perl -w

use strict;

# Table de hashage de tous les artistes
my %hArtiste;
my @liste1 = ("coucou");
$hArtiste{'CLE'}=@liste1;

print $hArtiste{'CLE'}[0]."";

# --> ERREUR <-- #
print @$hArtiste{'CLE'}."";
# --> ERREUR <-- #
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #120371
"Le Souricier Gris" wrote in message
print @$hArtiste{'CLE'}."n";


Cette ligne est ambiguë : veut-elle dire qu'on prend {OLE} dans @$hArtiste
(ce qui ne veut rien dire), ou qu'on prend le tableau (@) dans
$hArtiste{OLE} ? Pour lever l'ambiguïté, il faut grouper, ce qui se fait
avec des accolades.

Le Souricier Gris
Le #120370
Nicolas George wrote:
"Le Souricier Gris" wrote in message
print @$hArtiste{'CLE'}."n";


Cette ligne est ambiguë : veut-elle dire qu'on prend {OLE} dans @$hArti ste
(ce qui ne veut rien dire), ou qu'on prend le tableau (@) dans
$hArtiste{OLE} ? Pour lever l'ambiguïté, il faut grouper, ce qui se f ait
avec des accolades.


J'avais testé cette solution mais en fait elle me renvoyait 1,
c'était sans penser à une seconde erreur qui était les " " autour de
@...

#!/usr/bin/perl -w

use strict;

# Table de hashage de tous les artistes
my %hArtiste;
my @liste1 = ("coucou");
$hArtiste{'CLE'}=@liste1;

print $hArtiste{'CLE'}[0]."n";

print "@{$hArtiste{'CLE'}}"."n";


Merci Bien


Paul Gaborit
Le #120220
À (at) 4 Jul 2006 03:21:05 -0700,
"Le Souricier Gris"
J'avais testé cette solution mais en fait elle me renvoyait 1,
c'était sans penser à une seconde erreur qui était les " " autour de
@...


Ce n'est pas les guillemets qui changent les choses, c'est l'opérateur
'.' qui induit un contexte scalaire. Si vous utilisez l'opérateur ','
à la place, vous n'avez plus ce contexte scalaire.

#!/usr/bin/perl -w

use strict;

# Table de hashage de tous les artistes
my %hArtiste;
my @liste1 = ("coucou");


# avec une liste à plusieurs éléments on voit mieux ce qui se passe

@liste = qw/coucou bonjour hello/;

$hArtiste{'CLE'}=@liste1;

print $hArtiste{'CLE'}[0]."n";


print $hArtiste{CLE}[0], "n";
print "$hArtiste{CLE}[0]n";

print "@{$hArtiste{'CLE'}}"."n";


print "@{$hArtiste{'CLE'}}n";
print @{$hArtiste{'CLE'}}, "n";
print @{$hArtiste{'CLE'}} . "n";

Là, on comprend mieux la différence entre '.' et ','... on voit aussi
l'usage (implicite) de la variable $" (par défaut un espace qui sépare
les éléments d'un tableau interpolé dans une chaîne de caractères).

--
Paul Gaborit - Perl en français -
Publicité
Poster une réponse
Anonyme