shift versus @_

Le
Luc
Bonjour,

Je croyais qu'utiliser @_ et shift était équivalent.

J'ai créer deux "sub". Un qui utilise @_ et l'autre utilise shift.

On attend une référence d'un scalaire.

sub_shift se comporte comme je m'y attendais. Elle incrémente de 1 la
valeur pointée par la référence reçue.

Cependant, avec sub_tab, j'obtiens
Can't use string ("1") as a SCALAR ref while "strict refs" in use at
test.pl

Quelqu'un m'expliquer ce qui se passe ?

#######################################################################
#!/usr/bin/perl -w

use strict;

sub sub_tab( $ ) {
my $var = @_;
print "avant tab : " . $$var . "";
$$var++;
print "apres tab : " . $$var . "";
}


sub sub_shift( $ ) {
my $var = shift;
print "avant shift : " . $$var . "";
($$var++);
print "apres shift : " . $$var . "";
}

my $variable;
my $ref_var = $variable;

# Ok Pas de problème
$variable =8;
print $$ref_var , " " . $variable . "";
sub_shift( $ref_var );
print "hors de la proc" . $variable . "";


# Can't use string ("1") as a SCALAR ref while "strict refs" in use at
test.pl Pourquoi ???
$variable =8;
print $$ref_var , " " . $variable . "";
sub_tab( $ref_var );
print "hors de la proc" . $variable . "";
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #152121
Luc wrote in message
my $var = @_;


Tu es en train de stocker un tableau dans un scalaire. La conséquence est
que le scalaire reçoit le nombre d'éléments du tableau.

my ($var) = @_;

Luc
Le #152120
Oh là là

Je ne l'ai pas vu venir du tout celle-là!!

Merci beaucoup





On 3 oct, 15:33, Nicolas George
Luc wrote in message


my $var = @_;


Tu es en train de stocker un tableau dans un scalaire. La conséquence e st
que le scalaire reçoit le nombre d'éléments du tableau.

my ($var) = @_;



Publicité
Poster une réponse
Anonyme