Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) Mon, 16 Jan 2006 17:45:23 +0100, Nicolas écrivait (wrote):
Quelle différence y a-t-il entre :
${ $tab{ shift @_ } } = shift @_
et
${ $tab{ $_[0] } } = $_[0]
'shift' à un deux effets : 1- retourner le premier élément d'un tableau, 2- le supprimer du tableau (c'est là que réside la diffférence entre vos deux lignes).
Donc :
${ $tab{ shift @_ } } = shift @_;
serait en fait équivalent à :
${ $tab{ $_[0] } } = $_[1]; shift @_; shift @_;
et encore... Dans un cas comme celui-là, et bien que faisant du Perl depuis presque 15 ans, je doute encore de l'ordre d'évaluation du 'shift'. Peut-être est-ce :
${ $tab{ $_[1] } } = $_[0]; shift @_; shift @_;
Je vous laisse faire des tests pour en être sûr (perso, je triche un peu car je connais la réponse)... et pour ne pas utiliser une telle ligne (celle avec les deux 'shift') afin d'éviter à quelqu'un de se reposer la question quand il relira votre code !
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 16 Jan 2006 17:45:23 +0100,
Nicolas <tarassBULBA@club-internet.fr> écrivait (wrote):
Quelle différence y a-t-il entre :
${ $tab{ shift @_ } } = shift @_
et
${ $tab{ $_[0] } } = $_[0]
'shift' à un deux effets :
1- retourner le premier élément d'un tableau,
2- le supprimer du tableau (c'est là que réside la diffférence entre
vos deux lignes).
Donc :
${ $tab{ shift @_ } } = shift @_;
serait en fait équivalent à :
${ $tab{ $_[0] } } = $_[1];
shift @_;
shift @_;
et encore... Dans un cas comme celui-là, et bien que faisant du Perl
depuis presque 15 ans, je doute encore de l'ordre d'évaluation du
'shift'. Peut-être est-ce :
${ $tab{ $_[1] } } = $_[0];
shift @_;
shift @_;
Je vous laisse faire des tests pour en être sûr (perso, je triche un
peu car je connais la réponse)... et pour ne pas utiliser une telle
ligne (celle avec les deux 'shift') afin d'éviter à quelqu'un de se
reposer la question quand il relira votre code !
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 16 Jan 2006 17:45:23 +0100, Nicolas écrivait (wrote):
Quelle différence y a-t-il entre :
${ $tab{ shift @_ } } = shift @_
et
${ $tab{ $_[0] } } = $_[0]
'shift' à un deux effets : 1- retourner le premier élément d'un tableau, 2- le supprimer du tableau (c'est là que réside la diffférence entre vos deux lignes).
Donc :
${ $tab{ shift @_ } } = shift @_;
serait en fait équivalent à :
${ $tab{ $_[0] } } = $_[1]; shift @_; shift @_;
et encore... Dans un cas comme celui-là, et bien que faisant du Perl depuis presque 15 ans, je doute encore de l'ordre d'évaluation du 'shift'. Peut-être est-ce :
${ $tab{ $_[1] } } = $_[0]; shift @_; shift @_;
Je vous laisse faire des tests pour en être sûr (perso, je triche un peu car je connais la réponse)... et pour ne pas utiliser une telle ligne (celle avec les deux 'shift') afin d'éviter à quelqu'un de se reposer la question quand il relira votre code !
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Nicolas
2- le supprimer du tableau (c'est là que réside la diffférence entre vos deux lignes).
Donc :
${ $tab{ shift @_ } } = shift @_;
serait en fait équivalent à :
${ $tab{ $_[0] } } = $_[1]; shift @_; shift @_;
J'avais trop rapidement écrit ${ $tab{ $_[0] } } = $_[0] Je voulais dire ${ $tab{ $_[0] } } = $_[1]
Je vous laisse faire des tests pour en être sûr (perso, je triche un peu car je connais la réponse)... et pour ne pas utiliser une telle ligne (celle avec les deux 'shift') afin d'éviter à quelqu'un de se reposer la question quand il relira votre code !
Je posais pas la question sur si ça prend les arguments par la droite ou par la gauche, ni de savoir ce qu'il reste dans le tableau, pusique de toutes les façon on ne s'en sert plus après, mais de comprendre pourquoi avec les mêmes argument passés à la sub dans un des deux tout est avalé par le premier dépilage et qu'il ne reste rien pour le second. Je ne saurais plus vous donner l'exemple qui avait posé le problème.
Merci. Nicolas.
-- Powered .~. by Linux /V Enlever ------ // Take off solutions for /( ) BULBA smart penguins ^`~'^
2- le supprimer du tableau (c'est là que réside la diffférence entre
vos deux lignes).
Donc :
${ $tab{ shift @_ } } = shift @_;
serait en fait équivalent à :
${ $tab{ $_[0] } } = $_[1];
shift @_;
shift @_;
J'avais trop rapidement écrit ${ $tab{ $_[0] } } = $_[0]
Je voulais dire ${ $tab{ $_[0] } } = $_[1]
Je vous laisse faire des tests pour en être sûr (perso, je triche un
peu car je connais la réponse)... et pour ne pas utiliser une telle
ligne (celle avec les deux 'shift') afin d'éviter à quelqu'un de se
reposer la question quand il relira votre code !
Je posais pas la question sur si ça prend les arguments par la droite ou
par la gauche, ni de savoir ce qu'il reste dans le tableau, pusique de
toutes les façon on ne s'en sert plus après, mais de comprendre pourquoi
avec les mêmes argument passés à la sub dans un des deux tout est avalé
par le premier dépilage et qu'il ne reste rien pour le second.
Je ne saurais plus vous donner l'exemple qui avait posé le problème.
Merci. Nicolas.
--
Powered .~.
by Linux /V Enlever
------ // \ Take off
solutions for /( ) BULBA
smart penguins ^`~'^
2- le supprimer du tableau (c'est là que réside la diffférence entre vos deux lignes).
Donc :
${ $tab{ shift @_ } } = shift @_;
serait en fait équivalent à :
${ $tab{ $_[0] } } = $_[1]; shift @_; shift @_;
J'avais trop rapidement écrit ${ $tab{ $_[0] } } = $_[0] Je voulais dire ${ $tab{ $_[0] } } = $_[1]
Je vous laisse faire des tests pour en être sûr (perso, je triche un peu car je connais la réponse)... et pour ne pas utiliser une telle ligne (celle avec les deux 'shift') afin d'éviter à quelqu'un de se reposer la question quand il relira votre code !
Je posais pas la question sur si ça prend les arguments par la droite ou par la gauche, ni de savoir ce qu'il reste dans le tableau, pusique de toutes les façon on ne s'en sert plus après, mais de comprendre pourquoi avec les mêmes argument passés à la sub dans un des deux tout est avalé par le premier dépilage et qu'il ne reste rien pour le second. Je ne saurais plus vous donner l'exemple qui avait posé le problème.
Merci. Nicolas.
-- Powered .~. by Linux /V Enlever ------ // Take off solutions for /( ) BULBA smart penguins ^`~'^