my $v = 10;
my $refv = \$v;
SCALAR(0x7fce9481cc80)
print "$refv\n";
SCALAR(0x7fce9481cc80)
1
print "$$refv\n";
10
1
$$refv = 56;
print "$$refv\n";
print "$v\n";
56 56
1
sub f1{
my ($ref) = @_;
$$ref = $$ref + 10;
}
my $v = 20;
my $refv = \$v;
f1( $refv );
print "$v\n";
f1 ( \$v );
print "$v\n";
30 40
1
sub f2{
my $v = 20;
return \$v;
}
my $ref = f2();
print "$$ref\n";
20
1
sub f{
my ($x,$y) = @_;
$$x = 20;
$z = $y+10;
return (\$z);
}
my $v = 10;
my $w = 20;
my $x = f(\$v,$w);
my $y = $$x + $v;
print "$y\n";
50
1
Explication des différentes réponses possibles pour le MCQ
30
: pas de prise en compte du changement de $v
et de $w
par la fonction40
: pas de prise en compte du changement de $v
par la fonction50
: pas de prise en compte du changement de $w
dans la fonction60
: réponse correctemy @tab = ("ab",10);
my $reft = \@tab;
my @tab2 = @$reft;
print "$tab2[1]\n";
print "$$reft[1]\n";
10 10
1
@$reft = ("bc",11);
print "$tab[0],$tab[1]\n";
bc,11
1
$reft->[1] = 12;
print "$tab[1]\n";
12
1
my @t1 = ("tutu", 10);
my @t2 = (20, 30);
my @t = (2, \@t2, \@t1, ("et",20));
foreach my $e (@t) { print "$e\n"; }
2 ARRAY(0x7fcf70006318) ARRAY(0x7fcf7000cc98) et 20
sub f{
my ($reftab) = @_;
$reftab->[2] = 40;
}
my @tab = ( "hello", 10, -2 );
my $ref = \@tab;
f( $ref );
print "$tab\n";
my $v = 10;
my @t1 = (1,2, \$v);
my @t2 = (20, \@t1);
20ARRAY(0x7fce9481cd88)
Explications des différentes réponses possibles du QCM:
$@$t2[1][2]
: oubli des {}
pour déférencer des groupes de références${$t2[1]->[2]}
: réponse correcte${@{$t2[1]}[2]}
: réponse correcte$t2[1][2]
: oubli de déréférencer pour accéder à $v
print "${$t2[1]->[2]}\n";
10
1
print "${@{$t2[1]}[2]}\n";
10
1
print "$@$t2[1][2]\n";
SCALAR(0x7fce9481cc80)
1
my %hash = ('Jean' => 10, 'Jacques' => 70);
my $refh = \%hash;
HASH(0x7ff61400b080)
my %hash2 = %$refh;
print "$hash2{'Jean'}\n";
10
1
print "$$refh{'Jacques'}\n";
print "$refh->{'Jacques'}\n";
70 70
1
my $v = 10;
my %hash1 = ('tata' => \$v, 'titi' => $v, 'toto' => $v);
my %hash2 = ('toto' => 3, 'tutu' => \%hash1);
my $refh = \%hash2;
my $x = $refh->{'tutu'}->{'tata'}+1;
print "$x\n";
140497054187273
1
Explications des différentes réponses possibles du QCM:
SCALAR(0x7ff615809458)
: pas de prise en compte du changement de statut de la référence quand ajout de 111
: pas de prise en compte de la référence sur $v
140694899430489
: réponse correcteErreur
: pas de compréhension des déréférencementuse File::Copy;
copy("files/file1.txt","files/file2.txt") or die "Copy failed: $!";
1
copy("files/file1.txt",\*STDOUT);
test test2
1
move("files/file2.txt","files/file3.txt");
1
use UnModule;
print "@{$UnModule::reft}[0]\n";
13
1
print "@UnModule::t[0]\n";
1
print "@UnModule::reft[0]\n";
1
Explication des différentes réponses du QCM
@{$UnModule::reft}[0]
: réponse correcteImpossible
: pas de prise en compte du fait que reft
est accessible@UnModule::t[0]
: t
inaccessible depuis l'extérieur directement@UnModule::reft[0]
: besoin de deréférencer reft
use Employe;
my $e1 = Employe->new("Jean Dupont", 2000);
print "$e1\n";
Employe=HASH(0x7fc805019840)
1
use Data::Dumper;
print Dumper($e1)."\n";
$VAR1 = bless( { 'SALAIRE' => 2000, 'NOM' => 'Jean Dupont' }, 'Employe' );
1
my $e1_bis = $e1;
print "$e1_bis\n"
Employe=HASH(0x7fc805019840)
1
use Employe;
my $e1 = Employe->new("Jean Dupont", 2000);
print $e1->recuperation_info(2),"\n";
Jean Dupont 2000
1
$e1->augmentation_salaire(2);
2040
print $e1->recuperation_info(2),"\n";
Jean Dupont 2040
1
Explication des différentes réponses du QCM: