foreach my $i (@$array_ref) { print "$i -- $i->[0]n"; }
Ca n'arrange pas mes affaires.
Je pense que ce que tu proposes est un "sucre" de syntaxe. Extrait du perlreftut : "Dans la RÈGLE D'UTILISATION 1, vous pouvez omettre les accolades quand ce qui est à l'intérieur est une variable scalaire atomique comme $tref. Par exemple, @$tref est identique à @{$tref}, et $$tref[1] est identique à ${$tref}[1]. Si vous ne faites que..." Merci.
Laurent Wacrenier wrote:
CB <XX@xx.org> écrit:
J'ai une référence sur un tableau de tableaux, et j'aimerais parcourir
ce tableau.
Avec ceci :
foreach my $i (@$array_ref) {
print "$i -- $i->[0]n";
}
Ca n'arrange pas mes affaires.
Je pense que ce que tu proposes est un "sucre" de syntaxe.
Extrait du perlreftut :
"Dans la RÈGLE D'UTILISATION 1, vous pouvez omettre les accolades quand
ce qui est à l'intérieur est une variable scalaire atomique comme $tref.
Par exemple, @$tref est identique à @{$tref}, et $$tref[1] est identique
à ${$tref}[1]. Si vous ne faites que..."
Merci.
foreach my $i (@$array_ref) { print "$i -- $i->[0]n"; }
Ca n'arrange pas mes affaires.
Je pense que ce que tu proposes est un "sucre" de syntaxe. Extrait du perlreftut : "Dans la RÈGLE D'UTILISATION 1, vous pouvez omettre les accolades quand ce qui est à l'intérieur est une variable scalaire atomique comme $tref. Par exemple, @$tref est identique à @{$tref}, et $$tref[1] est identique à ${$tref}[1]. Si vous ne faites que..." Merci.
Jacques Caron
On Thu, 28 Jul 2005 17:33:59 +0200, CB wrote:
Laurent Wacrenier wrote:
CB écrit:
J'ai une référence sur un tableau de tableaux, et j'aimerais parcourir ce tableau. Avec ceci :
foreach my $i ( @{$array_ref} ) { print "$array_ref->[$i] -- $array_ref->[$i]->[0] n"; } C'est pas plutôt comme ça :
foreach my $i (@$array_ref) { print "$i -- $i->[0]n"; }
Ca n'arrange pas mes affaires.
Je pense que ce que tu proposes est un "sucre" de syntaxe. Extrait du perlreftut : "Dans la RÈGLE D'UTILISATION 1, vous pouvez omettre les accolades quand ce qui est à l'intérieur est une variable scalaire atomique comme $tref. Par exemple, @$tref est identique à @{$tref}, et $$tref[1] est identique à ${$tref}[1]. Si vous ne faites que..."
Tu as raté la partie importante... Si tu parcours @$array_ref, tu obtiens le contenu de chaque "case", pas son index, donc s'il s'agit d'un tableau de tableaux, tu accèdes à ses valeurs par $i->[index] et pas $array_ref->[$i]->[index].
Jacques.
On Thu, 28 Jul 2005 17:33:59 +0200, CB <XX@xx.org> wrote:
Laurent Wacrenier wrote:
CB <XX@xx.org> écrit:
J'ai une référence sur un tableau de tableaux, et j'aimerais parcourir
ce tableau.
Avec ceci :
foreach my $i ( @{$array_ref} ) {
print "$array_ref->[$i] -- $array_ref->[$i]->[0] n";
}
C'est pas plutôt comme ça :
foreach my $i (@$array_ref) {
print "$i -- $i->[0]n";
}
Ca n'arrange pas mes affaires.
Je pense que ce que tu proposes est un "sucre" de syntaxe.
Extrait du perlreftut :
"Dans la RÈGLE D'UTILISATION 1, vous pouvez omettre les accolades quand
ce qui est à l'intérieur est une variable scalaire atomique comme $tref.
Par exemple, @$tref est identique à @{$tref}, et $$tref[1] est identique
à ${$tref}[1]. Si vous ne faites que..."
Tu as raté la partie importante... Si tu parcours @$array_ref, tu obtiens
le contenu de chaque "case", pas son index, donc s'il s'agit d'un tableau
de tableaux, tu accèdes à ses valeurs par $i->[index] et pas
$array_ref->[$i]->[index].
J'ai une référence sur un tableau de tableaux, et j'aimerais parcourir ce tableau. Avec ceci :
foreach my $i ( @{$array_ref} ) { print "$array_ref->[$i] -- $array_ref->[$i]->[0] n"; } C'est pas plutôt comme ça :
foreach my $i (@$array_ref) { print "$i -- $i->[0]n"; }
Ca n'arrange pas mes affaires.
Je pense que ce que tu proposes est un "sucre" de syntaxe. Extrait du perlreftut : "Dans la RÈGLE D'UTILISATION 1, vous pouvez omettre les accolades quand ce qui est à l'intérieur est une variable scalaire atomique comme $tref. Par exemple, @$tref est identique à @{$tref}, et $$tref[1] est identique à ${$tref}[1]. Si vous ne faites que..."
Tu as raté la partie importante... Si tu parcours @$array_ref, tu obtiens le contenu de chaque "case", pas son index, donc s'il s'agit d'un tableau de tableaux, tu accèdes à ses valeurs par $i->[index] et pas $array_ref->[$i]->[index].
Jacques.
Laurent Wacrenier
CB écrit:
J'ai une référence sur un tableau de tableaux, et j'aimerais parcourir ce tableau. Avec ceci :
foreach my $i (@$array_ref) { print "$i -- $i->[0]n"; }
Ca n'arrange pas mes affaires. Je pense que ce que tu proposes est un "sucre" de syntaxe.
Non. @$array_ref liste les valeurs et non les indices. Là tu affiches les valeurs dont les incides sont les valeurs, ce qui n'a pas de sens à priori.
Ca marche maintenant. J'avais effectivement loupé l'erreur dans mon ordre print que tu as corrigé dans ta première réponse. Merci à toi ainsi qu'à Jacques C.
Laurent Wacrenier wrote:
CB <XX@xx.org> écrit:
J'ai une référence sur un tableau de tableaux, et j'aimerais parcourir
ce tableau.
Avec ceci :
foreach my $i (@$array_ref) {
print "$i -- $i->[0]n";
}
Ca n'arrange pas mes affaires.
Je pense que ce que tu proposes est un "sucre" de syntaxe.
Non. @$array_ref liste les valeurs et non les indices.
Là tu affiches les valeurs dont les incides sont les valeurs, ce qui
n'a pas de sens à priori.
Ca marche maintenant.
J'avais effectivement loupé l'erreur dans mon ordre print que tu as
corrigé dans ta première réponse.
Merci à toi ainsi qu'à Jacques C.
foreach my $i (@$array_ref) { print "$i -- $i->[0]n"; }
Ca n'arrange pas mes affaires. Je pense que ce que tu proposes est un "sucre" de syntaxe.
Non. @$array_ref liste les valeurs et non les indices. Là tu affiches les valeurs dont les incides sont les valeurs, ce qui n'a pas de sens à priori.
Ca marche maintenant. J'avais effectivement loupé l'erreur dans mon ordre print que tu as corrigé dans ta première réponse. Merci à toi ainsi qu'à Jacques C.
Klaus Eichner
"CB" wrote in message news:42e8ec47$0$25016$
Bonjour,
[...]
Je croyais pourtant for et foreach équivalentes.
C'est absolument correcte Voir http://perl.enstimac.fr/DocFr/perlsyn.html#boucles%20foreach "...Le mot-clé foreach est en fait un synonyme du mot-clé for..."
Mais c'est vrai que perlol utilise toujours for, tandis que perldsc réserve foreach aux parcours de hachages. Pouvez-vous m'expliquer un peu la différence entre les deux constructions ?
Les 2 constructions sont parfaitement échangable, c'est-à-dire dans un programme Perl on peut toujours remplacer "for" par "foreach" ou "foreach" par "for", ça ne change strictement rien dans l'execution du programme.
Il y a 2 styles pour la construction d'une boucle "for" / "foreach".
1.) le style "proprement Perl" avec for/foreach (@Array) { ... } 2.) l'ancien style "C/C++" avec for/foreach (INIT; CONDITION; MOD) { ... }
Par exemple, les 2 contructions du style "proprement Perl" sont parfaitement identiques:
=================== Mais il y a une différence au niveau de l'execution entre le style "proprement Perl" et l'ancien style "C/C++":
La boucle du style "proprement Perl": for/foreach (@ary) { s/foo/bar/ }
est plus rapide que la boucle de l'ancien style "C/C++": for/foreach (my $i = 0; $i < @ary; $i++) { $ary[$i] =~ s/foo/bar/ }
à cause des éléments individuels "$ary[$i]" qui sont référencé explicitement dans la boucle de l'ancien style "C/C++".
-- Klaus
"CB" <XX@xx.org> wrote in message
news:42e8ec47$0$25016$8fcfb975@news.wanadoo.fr...
Bonjour,
[...]
Je croyais pourtant for et foreach équivalentes.
C'est absolument correcte
Voir http://perl.enstimac.fr/DocFr/perlsyn.html#boucles%20foreach
"...Le mot-clé foreach est en fait un synonyme du mot-clé for..."
Mais c'est vrai que perlol utilise toujours for, tandis que perldsc
réserve foreach aux parcours de hachages.
Pouvez-vous m'expliquer un peu la différence entre les deux constructions
?
Les 2 constructions sont parfaitement échangable, c'est-à-dire dans un
programme Perl on peut toujours remplacer "for" par "foreach" ou "foreach"
par "for", ça ne change strictement rien dans l'execution du programme.
Il y a 2 styles pour la construction d'une boucle "for" / "foreach".
1.) le style "proprement Perl" avec for/foreach (@Array) { ... }
2.) l'ancien style "C/C++" avec for/foreach (INIT; CONDITION; MOD) { ... }
Par exemple, les 2 contructions du style "proprement Perl" sont parfaitement
identiques:
C'est absolument correcte Voir http://perl.enstimac.fr/DocFr/perlsyn.html#boucles%20foreach "...Le mot-clé foreach est en fait un synonyme du mot-clé for..."
Mais c'est vrai que perlol utilise toujours for, tandis que perldsc réserve foreach aux parcours de hachages. Pouvez-vous m'expliquer un peu la différence entre les deux constructions ?
Les 2 constructions sont parfaitement échangable, c'est-à-dire dans un programme Perl on peut toujours remplacer "for" par "foreach" ou "foreach" par "for", ça ne change strictement rien dans l'execution du programme.
Il y a 2 styles pour la construction d'une boucle "for" / "foreach".
1.) le style "proprement Perl" avec for/foreach (@Array) { ... } 2.) l'ancien style "C/C++" avec for/foreach (INIT; CONDITION; MOD) { ... }
Par exemple, les 2 contructions du style "proprement Perl" sont parfaitement identiques: