Bonjour,

Voici un petit effet de bord auquel je ne m'attendais pas, et dont je ne comprends pas vraiment la raison;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env perl6
use v6;
 
my %hash;       
my $i=0;
for 1..3 {
    $i++;
    %hash{$_}=($i,"$i");
}   
say %hash;
donne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
{1 => (3 1), 2 => (3 2), 3 => (3 3)}
Le $i est donc passé en référence et non par valeur, contrairement à "$i".

Un fois qu'on sait et qu'on accepte qu'on passe la référence, ça va. Mais pourquoi passe-t-on la référence... je trouve cela bizarre.

Et en effet en perl5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
use v5.10;
use Data::Dump  qw(dump);
 
my %hash;
my $i=0;
for (my $j=1;$j<=3;$j++) {
    $i++;
    $hash{$j}=($i,"$i");
}
say dump(%hash);