Bonjour à tous !

J'ai un problème étrange : je mets un vecteur dans une référence de hash, du genre push(@{$$rref{"dxf:concerne:9"}} ,1,2,3,4,5) et après avoir "stocké" ça via Storable, il y a un élément invisible qui s'ajoute à la fin de ma liste : voici l'affichage de l'exécution du petit programme :

mojolicious@debian:~/rd/lite$ ./truc.pl
dxf:concerne:9 : 4 :: 1, 2, 3, 4, 5 # <- premier affichage du vecteur, tout est normal
Use of uninitialized value in join or string at ./truc.pl line 34. # <- second affichage du vecteur...
dxf:concerne:9 : 5 :: 1, 2, 3, 4, 5,
mojolicious@debian:~/rd/lite$
Et voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/perl
 
use strict;
use warnings;
use Storable;
 
sub un($);
sub get_comp_text($);
sub get_r($);
sub set_r($);
 
my %r;
 
un(\%r);
 
print get_comp_text(\%r) . "\n";
 
set_r(\%r);
get_r(\%r);
 
print get_comp_text(\%r). "\n";
 
sub un($) {
  my ($rref) = @_;
  push(@{$$rref{"dxf:concerne:9"}} ,1,2,3,4,5);
}
 
sub get_comp_text($) {
  my ($rref) = @_;
 
  my $mess = '';
  foreach my $key (sort keys %$rref) {
    if ($key =~ m/^dxf:concerne/ and  scalar $$rref{$key} > 1 ) {
      $mess .= $key .' : '. $#{$$rref{$key}} .' :: '. join(", ", @{$$rref{$key}});   # ligne 34
    }
  }
  return $mess;
}
 
 
sub set_r($) {
  my ($rref) = @_;
 
  my (%r_solde, @keys);
 
  foreach my $key (keys %{$rref}) {
    if (ref($$rref{$key}) eq 'ARRAY') { store $$rref{$key}, $key ;
                                        push(@keys, $key)                       }
    else                              { $r_solde{$key} = $$rref{$key}           }
  }
 
  store \%r_solde, "r_solde";
  store \@keys   , "keys";
}
 
sub get_r($) {
  my ($rref) = @_;
 
  my $destination = "./";
 
  my $r_tmp = retrieve("r_solde");
  foreach my $key (keys %{$r_tmp}) {
    $$rref{$key} = $$r_tmp{$key}
  }
 
  my $keys_ref = retrieve("keys");
  foreach my $key (@{$keys_ref}) {
    my $array_ref = retrieve("$key");
    for (my $i=0 ; $i<= scalar(@{$array_ref}) ; $i++) {
      $$rref{$key}[$i] = $$array_ref[$i]
    }
  }
}
 
exit(0);
Quelqu'un pourrait-il m'aider ? Je n'arrête pas de me creuser la tête et je n'arrive à rien...

A+ j'espère