Bonjour tout le monde !
J'aurais besoin d'un coup de main pour comprendre pourquoi mon test perl fonctionne ainsi :
#!/usr/bin/perl -swl
my $scalar=45;
my @table=[5, 6, 7];
my %hash=("test"=>"TEST", "abc"=>"ABC", "ghi"=>"GHI");
my @final=[ $scalar, \@table, \%hash];
sub findHashValue{
my ($contref,$key)=@_;
my @container=@$contref;
my $contrefbis=$container[0]; # je ne comprends pas pourquoi je dois déréférencer une deuxième fois ?
my @containerbis=@$contrefbis;
print "We search key ->$key<- in @container with ref $contref (first element is $containerbis[0])";
for($i=0;$i<$#containerbis+1;$i++){
print $containerbis[$i];
}
}
findHashValue(\@final,"test");
et non pas ainsi :
#!/usr/bin/perl -swl
my $scalar=45;
my @table=[5, 6, 7];
my %hash=("test"=>"TEST", "abc"=>"ABC", "ghi"=>"GHI");
my @final=[ $scalar, \@table, \%hash];
sub findHashValue{
my ($contref,$key)=@_;
my @container=@$contref;
print "We search key ->$key<- in @container with ref $contref (first element is $container[0])";
for($i=0;$i<$#container+1;$i++){
print $container[$i];
}
}
findHashValue(\@final,"test");
En effet, je ne comprend pas pourquoi je dois déréférencer deux fois ? Quelqu'un peut m'aider ?
Merci !
# Mauvaise syntaxe
Posté par anaseto . Évalué à 6.
En fait il faut écrire:
avec des parenthèses pour créer ta liste. La syntaxe [] est pour créer une référence à une liste.
[^] # Re: Mauvaise syntaxe
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 1.
Merci beaucoup, j'ai regardé 10x mon code et je n'ai jamais pensé à regarder mes définitions ;) Je comprends mieux la documentation sur Tie::ICal alors.
[^] # Re: Mauvaise syntaxe
Posté par Adrien Dorsaz (site web personnel, Mastodon) . Évalué à 2.
Pour compléter, voici donc le code qui fonctionne comme je le souhaite :
En effet, c'est bien une référence de tableau que j'ai en utilisant l'outil Tie::iCal.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.